Presenter notes
A sixty-minute working session, with the same decisions in the room and on Zoom.
Lead with what the dataset makes possible: following careers across editions and across the two Lists. The core atlas repairs are complete. Use saved earlier outputs to teach how to read, decide and check a correction, with the repaired result made explicit.
Before the day
Running order
Open the deck; press S for speaker notes. ?motion makes the animated slides play even when Windows animation effects are off. The video slide starts muted and has native Play/Replay controls, plus a direct MP4 link if autoplay is blocked.
| Minutes | What happens | If time is short |
|---|---|---|
| 0–7 | Printed page; video; Wodehouse source-to-map from both Lists; what the records make visible; three questions | Keep the cross-service example; shorten the table walkthrough |
| 7–13 | Balmer: three minutes tagging the last two postings, one minute comparing, one minute discussing | Keep everyone on Balmer; no tour of the other entries |
| 13–23 | Show Claude Code the raw OCR; explain why regular expressions alone were insufficient; develop the hybrid; prompt, source check and saved correction | Keep the source discussion and division of work; use the saved replay |
| 23–30 | Abery/Carbery decision before reveal; A’Beckett/Beckett contrast | Keep the first decision; shorten the second example |
| 30–40 | One entry, three kinds of link; WikidataMCP; QLever; three lookups (maximum three minutes); worked corpus cost | Use saved lookups; do not start a live chatbot run |
| 40–46 | Brewster: two completed repairs, geography and event meaning; how to check beyond a map | Keep the source decision and completed result; leave other repair examples on the supporting page |
| 46–56 | R1, R3, R8: six minutes deciding, four minutes discussing Harris | Reduce the recap cases; protect Harris and the reasons |
| 56–60 | One sentence about participants’ own records, questions, take-home links | Use the written take-home prompt on step 7 |
The detailed pages contain more examples than the hour. Trading Consequences, the full Wodehouse trace and repair history, two additional clusters and the other past map errors are supporting material. Keep the detailed audit percentages available for questions; the presentation teaches the review method through source clauses.
Walk through the development process
The Python/model/Python table is the result of the design discussion. Begin with what actually happened: I showed Claude Code raw OCR, discussed whether Python could handle it alone, and developed the hybrid approach with it.
- 13–14: show the raw Balmer excerpt. Participants have just marked it up, so ask what their reading requires the program to know.
- 14–15: identify the familiar historical problem: semi-structured records whose prose is too irregular for regular expressions alone. Use inherited places, the meaning of a date and concurrent appointments. OCR adds variation, but the source itself is irregular.
- 14–15: the real rule-based parser at scale: 78% of 202,100 printed biographies, refusal working on Wodehouse 1867, and confident errors on Balmer (“Dominions Office”) and Connolly (Western Australia).
- 15–16: explain how the work was divided, in two stages. Reading every edition: rules first, Qwen for refused entries. Final records: Qwen read every one of the 65,239 careers after Python expanded abbreviations; Python validated the output. Claude Code helped develop and write this pipeline. Qwen read entries inside it. Read the “What is Qwen?” box aloud only if the room looks unsure.
- 16–17: three ways to run Qwen. The script posts to one OpenAI-compatible address; OpenRouter was used to choose the model, a DGX Spark desktop ran the corpus, and an Alliance cluster ran later identity judgements. One minute.
- 17–19: show the prompt as the written result of those decisions.
- 19–20: compare saved outputs with their sources. Mention the 30,496-entry, 8.24-hour run after explaining the design and checks.
- 20–23: walk through the saved Balmer correction and its checks. Run the command only if there is time.
Use the saved OCR block and prompt as concrete material. The proposed instruction on step 3 is wording participants can reuse; it is not a transcript of the original conversation. The raw block is from OCR page index 832, block index 11 of the 1936 volume; the printed page number is 614.
The correction replay
python3 scripts/demo_ditto_fix.pyThis needs neither a model nor a network. It checks three saved records and twelve events, changes Balmer’s literal “do.”, preserves the other fields, and checks that a second run makes no further changes. Constructed cases check that a missing predecessor stays unresolved. The saved report includes before, after and the reason.
Call this a replay of a past correction. It is not a production rerun or a measurement of the graph’s post-fix accuracy. The saved Blakely and Connolly fields are unchanged because they are outside the ditto rule’s scope. Treat these files as teaching snapshots.
Completed repairs as teaching examples
Wodehouse, optional supporting example: the opening follows his career across the two Lists. If asked how historical geography was checked, use the supporting page, which pairs the saved before image with a current atlas capture. Venezuela, the Cape high commissionership, Belize City, and the IO Honduras record are repaired. The wider check found 1,120 pre-1910 Union assignments across both Lists. Explicit towns stay available; ambiguous historical jurisdictions remain unresolved. Dated seats replace the later-capital shortcuts.
Brewster, minutes 40–44: introduce both repairs as complete, then retrace the decisions. Correcting Victoria’s geography left an earlier graph asserting a 1912–1916 appointment from a clause saying he was defeated. Ask whether that assertion is supported before revealing the completed correction. Keep the defeat as source evidence; do not treat it as an office held. The saved graph is the before version. The rebuilt graph preserves this as an electoral defeat and removes the held-role assertion.
The wider repair work also checked route rendering. Cameron’s acting Windward appointments remain mapped and connect to Gambia; the Ottawa conference visit stays in the written record. These are supporting examples of deciding what to map, not additional slides for the hour. The Province of Canada correction and sources are recorded in the atlas repository.
The live lookup and saved runs
Search Trimen, Price, then Tibbits. Read the retrieved evidence before deciding. Price is a useful pause: a rare name and compatible career context support the match, but another source would strengthen it. Tibbits is unresolved after the search, not proof that no item exists. The Ground page and answer key are the fallback.
The saved chatbot-versus-retrieval experiment (Gemini without tools: 0 of 16 person identifiers; Opus and Astra with retrieval: 16 of 16, 20–27 minutes) is now a website page, not part of the hour. Point to it if asked. Keep Harris’s particular date conflict for the final exercise.
The distinction between coding agent, corpus reader and hard-case reviewer, and the 25-day serial extrapolation for retrieval, moved to the side-experiment page. Participants without a GPU can begin with twenty records and a hosted model.
The cost slide (38–40) is a worked hosted-cost estimate from measured tokens: about 640 read and 330 written per entry; Qwen3.8-27B on OpenRouter at $0.0239/$2.175 per million (a 50% promotion on 8 October) gives ≈ $22 for 30,496 entries, ≈ $45 at the regular price. Check the price on the morning of the session. Stress that output tokens are almost all of it, and that a model change needs the sample audit again.
Participation and debrief
Use the same prompts in the room and on Zoom. Pause before the Abery decision and the Brewster second reveal. Ask for evidence, not a show of confidence. No polling software is required.
For the final exercise, introduce the records as saved teaching cases, then work through R1, R3 and R8; the other five are further practice. Participants judge the saved proposals against their evidence. Select R8 beside Copy decision and reason for a chat response. Paper users have the same proposals and evidence. The TSV download retains all reasons and the case-set fingerprint; do not promise collection unless a destination has been arranged.
For Harris, ask what supports the identity and what remains uncertain about the date. The full name, college and governorship support joining the records despite a possible OCR error in the birth year. Keep the conflict recorded; accepting the identity does not replace the source reading. Leave an identity unresolved when the wider biography supplies insufficient evidence, rather than splitting a matching career over one date. Check the scan, another edition and the external date’s cited source. Repeated copies of an account do not make independent corroboration.
Likely questions
Why not let a model do it end to end? For the final records it largely did: Qwen read every one of the 65,239 careers. What the pipeline adds around the model is what makes the result checkable: the source text stays beside every record, Python drops any place or year the source does not contain, and recurring fixes (Balmer’s ditto) are deterministic rules that log their reason and can be rerun when a rule changes. The printed reading and the inference stay in separate fields (place: "do." versus the inherited place, flagged place_inherited).
How many careers cross the two Lists, and why is that matching harder? The atlas publishes 186 proposed cross-service links (72 at confidence A, 93 at B, 21 at C; 30 flagged ambiguous). A September spot check supported 11 of 15, so treat them as candidates. Matching across Lists is harder than within one: different house styles and abbreviations, no shared identifiers, different editions years apart, and name forms that change with titles. Wodehouse is linked by name plus a K.C.B. of 1862 printed in both.
Is 3.9% of people in Wikidata a problem? It is the point: Wikidata knows governors and judges, not most clerks and surveyors. Event-to-place coverage (about 69% of all events, 86% of placed Colonial Office events) is a different measure. The linked people are not a representative sample.
Why plot at capitals? A seat is a plotting proxy, not a residence or a journey. Kandy (1840) is in the data as its own place but sits on top of Colombo at world scale; arcs connect recorded postings in order.
Why does the OCR start in 1867 when the List began in 1862? The project’s digitised run starts in 1867. Early editions carry an account of the principal officers’ services; the full Record of Services begins in 1883.
Claims to keep bounded
- Roster counts are sums of within-List person records, not unique people across both services. The 186 bridges are proposed links; a small September check supported 11 of 15.
- The structuring audit has three model-reviewed samples, before normalisation. Round 1 has eight major findings on six records. The samples do not establish finished-graph accuracy.
- A labelled sample measures the population and decision type it was designed for. The 76% figure concerns “different” decisions in a particular risky stratum, not overall recall.
- An identifier resolving to the expected label is not enough to establish a historically correct match.
- Administrative seats are plotting proxies. Arcs connect recorded postings; they are not observed journeys.
- The atlas repairs were published and browser-checked on 7–8 October. Historical screenshots and saved experiment outputs are dated evidence, not the current public result. The top-500 geographic review does not mean all 500 careers have been fully verified against primary sources.