connexion.menotes

How a run is produced, what the raw files are, and how you may re-use them

Everything on this site is one procedure run over and over. This page is that procedure, the files it leaves behind, and what you are allowed to do with them.

What one board is

A board is a single buying question asked 44 different ways.

The second run

Every category is measured twice, from scratch — run A and run B, the same 44 questions asked again. Both runs are published, not only the one the table is drawn from, and every board prints its own run A/run B top-ten overlap.

A category built from a request is only published behind four checks that are commands rather than judgement calls: at least 12 distinct products named, top-ten overlap of at least 8 out of 10 between the two runs, no product above 95% share, and no top-five product that was named in only one phrasing. The last two are the ones that catch a wrong board rather than a thin one — a single name in nearly every answer is usually an extractor that has collapsed a category onto one string, and a top-five product carried by one phrasing is usually a question that leaked a brand name.

The files beside every board

A board lives at https://connexion.me/c/<slug>/. Five files sit at that same path, and they are the entire measurement — the page is only a rendering of them.

fileone line is
answers-runA.jsonl
answers-runB.jsonl
one engine answer, verbatimengine, model, index, phrasing, text, error
mentions-runA.jsonl
mentions-runB.jsonl
the products extracted from one answer — engine, index, phrasing, names
ranking.json the board itself — category, answers, phrasings, engines, engine_labels, answers_by_engine, partial, and vendors, each carrying vendor, key, mentions, share, by_engine, phrasings_named_in and rank

The .jsonl files are NDJSON: one JSON object per line, no enclosing array, so they stream and you never need to hold one in memory. index is the phrasing number, 0 to 43, and it is the join key — the same index and engine in the answers file and the mentions file are the same question put to the same engine.

Reading them

Nothing here needs a client, a key or an account.

curl -s https://connexion.me/c/hotel/ranking.json | python3 -m json.tool | head

# every product the extractor took out of run A, most-named first
curl -s https://connexion.me/c/hotel/mentions-runA.jsonl \
  | python3 -c 'import sys,json,collections; c=collections.Counter()
[c.update(set(json.loads(l)["names"])) for l in sys.stdin]
[print(n,v) for n,v in c.most_common(15)]'

# the verbatim answer behind one cell: phrasing 0, as ChatGPT returned it
curl -s https://connexion.me/c/hotel/answers-runA.jsonl \
  | python3 -c 'import sys,json
[print(json.loads(l)["text"]) for l in sys.stdin
 if json.loads(l)["index"]==0 and json.loads(l)["engine"]=="chatgpt"]'

If a count on a board disagrees with what you get out of these files, the files are right and we want to hear about it: lana@connexion.me.

Re-use and attribution

You may re-use the raw answers. In the words it was granted in, on 2026-08-08:

…you have the right to re-use the raw answers in later work with attribution, including inside your open-source tooling, with no restriction on scope, medium or duration.

That is the standing grant, and it is not specific to the person it was first written to. Concretely, and with nothing held back for later:

Two things this grant does not cover, because they are not ours to give: the engines' own terms for their outputs, which are between you and them, and any file we have handed someone privately at an unlisted URL — that stays under whatever was agreed when it was handed over. Everything published beside a board is covered.

What this is not

It is a measurement of what answer engines said, on a stated date, in response to stated questions. It is not a quality ranking, not a review, and not advice on what to buy. A product can be excellent and rank low here; that gap is the interesting part, not a defect of the product.