Glossary

The terms the pages use, in plain words, with what the project actually ran.

JSON

A plain-text way of writing a record so that every programming language can read it. A record is a list of named fields inside braces; a list is inside square brackets; text is in quotes; numbers and null (meaning “not given”) stand alone. Trimen’s entry, structured:

{
  "surname": "TRIMEN",
  "given_names": "HENRY",
  "birth_year": null,
  "education": "M.B. (Lond.)",
  "honours": [{"award": "F.R.S.", "year": null}, {"award": "F.L.S.", "year": null}],
  "events": [
    {"position": "lecturer on botany", "place": "London", "year_start": 1867, "year_end": 1875},
    {"position": "senior assistant to department of botany", "place": "British Museum", "year_start": 1869, "year_end": 1879},
    {"position": "director Royal Botanical Gardens", "place": "Ceylon", "year_start": 1880, "year_end": null}
  ],
  "terminal": null
}

That is what the model is asked to return for each entry, what the Python validator checks against the source, and what the graph is built from. One object per line in a file is a corpus; a spreadsheet can be made from it in one command, and the reverse.

The model: Qwen3.6-35B-A3B

The open-weights model used in the saved structuring runs. “35B” refers to total parameters and “A3B” to the approximate number active per token in its mixture-of-experts design. Fewer active parameters reduce computation; the other weights still need to be stored.

Qwen is a family of open-weight models from Alibaba’s Qwen team: the trained weights can be downloaded and run on your own hardware, or reached through a hosted service. The project served Qwen3.6-35B-A3B with vLLM on an NVIDIA DGX Spark, a desktop machine with 128 GB of memory shared with its GPU. The India Office List run processed 30,496 entries in 8.24 hours, with reasoning off, temperature zero and sixteen workers. Those are measurements of this setup and corpus, not a speed guarantee for another machine. The saved structuring page describes the prompt, checks and failures.

Two jobs. The coding agent writes and repairs the scripts with the historian. The model inside those scripts reads the collection. They can be different models. A more capable model can also help review difficult cases, but its answers need checking before becoming a reference set.

Three ways to run it

The structuring script sends the system prompt and one entry to a web address that accepts the OpenAI request format. Changing that address changes where the model runs; the script stays the same.

Route What it is How Imperial Careers used it
Hosted service (OpenRouter) A broker that resells access to many models. Pay per token, no hardware. June 2026: compared several open models on the same 40 entries, scored against records Claude had structured in-session. Qwen3.6 came closest.
Desktop GPU (NVIDIA DGX Spark) Your own machine, with vLLM serving the model on the local network. No per-request bill. All structuring: 30,496 India Office entries in 8.24 hours overnight.
Research cluster (Digital Research Alliance of Canada: Narval, Nibi) Shared university GPUs. A batch job waits in a queue, starts the model inside the job and works through a file. Compute nodes have no internet. Identity judgements with Qwen3.8-27B: 3,539 pairs in 35 minutes on one A100 GPU.

What reading the India Office List would cost on a hosted service

Measured with the Qwen tokenizer on a random 2,000 India Office entries and 2,000 saved Qwen records: about 640 tokens read per entry (a 471-token system prompt plus about 150 for the entry) and about 330 written.

On 8 October 2026 OpenRouter listed Qwen3.8-27B at $0.0239 per million input tokens and $2.175 per million output tokens, a 50% promotion. For 30,496 entries: about 19.5 million tokens read (≈ $0.47) and 10 million written (≈ $22). At the regular price, roughly twice that: ≈ $45. Almost all of the cost is output. Retries and failures add to it, prices change, and Qwen3.8-27B was not the model used for structuring: a different model needs the sample audit again.

Starting without a university GPU

Use a small sample with a hosted model or an existing coding agent before choosing infrastructure for the whole collection. The same prompt can be tried through a hosted endpoint; the Imperial Careers comparison script illustrates that approach. Recheck output quality when changing the model or serving setup.

Local or rented GPUs are alternatives once the workload is clear. Memory requirements depend on the stored weight precision, context length and concurrent requests; weight size alone does not establish that a run will fit. A compressed model also needs a fresh check against the source sample.

A small cost worksheet

For twenty representative entries, record:

Measure Why keep it
Input and output tokens, separately Apply the chosen provider’s current rates to each
Charges or GPU hours University allocations consume resources even without a per-request invoice
Wall-clock time and concurrency Distinguish elapsed time from total computation
Failed requests and retries A successful response is not the only work you paid for
Human review and correction time Cheap extraction can still produce expensive cleanup
Records accepted after review Compare cost per usable record

For a rough token-cost estimate, multiply measured tokens per entry by the intended number of entries and the current input/output rates. State the assumptions: longer entries, tool calls, retries and a different mix of hard cases will change it. The model’s price is only one part of the project’s cost.

Other terms

F-score. One number summarising two: precision (of what the system found, how much was right) and recall (of what was there, how much the system found). The F1 score is their harmonic mean; 0.6 does not imply that either component is 0.6. Trading Consequences scored 0.62 on commodities and 0.61 on places.

QID. A Wikidata identifier: the letter Q and a number, such as Q1800510 for Philip Wodehouse. Stable, language-neutral, and shared by everyone who grounds to Wikidata. A model’s memory of one is not a lookup.

Grounding. Linking a name in your source to a shared identifier for the thing it names. The pages distinguish retrieving a candidate, reading its statements, and deciding the match.

Vector search. Search by meaning rather than by matching letters: the query and every item are turned into lists of numbers that place similar meanings near each other. “Walpole Island” by string finds an island in New Caledonia; by vector it finds the Ontario reserve. The WikidataMCP server offers this over Wikidata.

MCP. Model Context Protocol, a standard way of giving a model a tool, such as a search endpoint, that it can call and whose results come back as evidence rather than memory.

vLLM. An open-source server that runs an open model on a GPU and answers requests in the same format as the commercial APIs.

OpenRouter. A hosted service that gives one account and one request format for many models, open and commercial, charged per token.

DGX Spark. NVIDIA’s desktop AI computer: one GB10 chip with 128 GB of memory shared between processor and GPU, enough to hold a mid-sized open model.

Cluster and SLURM. A research cluster is a pool of shared computers. SLURM is the queue: you submit a job script asking for a GPU and a time limit, and it runs when resources are free.

Mixture of experts. A model built from many small specialist networks, only a few of which run for each token, so it is cheap to run for its size.

Quantisation. Storing a model’s numbers at lower precision (4 bits instead of 16) so it needs a quarter of the memory, at a small cost in quality.

The three chatbots in the grounding test. Gemini 3.8 Flash (Google’s fast, inexpensive tier), Claude Opus 5.5 (Anthropic’s frontier model) and GPT Astra 6. All three were given the same prompt and the same twenty entries on 7 October 2026; Gemini without tools, the other two with web search.

Reasoning mode. A setting where the model writes out a chain of thought before answering. Helpful for hard questions; on this task it spent the whole budget thinking and produced no record.

Regex. A pattern language for matching text by shape (“capital letters, comma, names, a dash, then clauses ending in a year”). Used to read every printed edition; entries it could not parse went to a model.

Validator. Python code that checks the model’s output against the source and drops anything the source does not contain.

Ledger. An append-only file of decisions with reasons, such as the 917 merge groups, so that every decision can be revisited.

Silver standard. A set of cases labelled by hand after the fact, used to measure what the automated passes did. Here “silver” means a provisional reference set. Its value depends on how the cases were selected, labelled and checked; a frontier model’s answer alone is not a gold standard.

Conservative matching gate. A rule intended to accept a link only when the evidence strongly supports it, and otherwise leave it unlinked. The project calls this a “zero-false-positive gate”; that names an aim, not a measured guarantee. It trades coverage for precision, which is why a review queue exists.