Methodology: How the Secretary-General Town Hall Readout Was Produced

Subject
Method behind the readout of the public town hall with the six candidates for Secretary-General
Source event
UN Town Hall: The Next Secretary-General, 23 July 2026, General Assembly Hall
Purpose
A reproducible record of how the source transcript was obtained, treated, analysed, and published
Source is UN ASR, not an official record. This readout is built from the automatic-speech-recognition transcript published on the UN transcripts portal (transcripts.un.org). ASR transcripts are not official UN records. Every position-critical quote on the readout was audio-verified against the meeting recording before publication (see Stage 4): all 12 matched, and 2 ASR garbles were corrected to the audio reading. Names, figures and non-quoted text elsewhere are still treated as provisional against the ASR.
Overview & Purpose

This document records how the Secretary-General town hall readout was produced. The readout covers the public town hall of 23 July 2026, at which six candidates for Secretary-General answered questions from Bloomberg moderators and from member states, an NGO, UN staff and civil society in the General Assembly Hall.

It exists for two reasons:

  • Replication. This is the first delivered readout in the secretary-general group, and the 2026 selection is expected to generate more sessions before the appointment. The same treatment will be applied to those, so this is a concrete runbook.
  • Provenance. If a reader asks how the conclusions were reached and where the information came from, this document answers that directly.

The source transcript was obtained from the UN transcripts portal rather than captured and transcribed locally. The portal supplies a speaker-attributed ASR transcript, which removes the recording and speech-to-text stages but adds a dependency on machine transcription — a dependency that matters unusually much here, because the ASR mishears almost every candidate's name.

Two things make this readout different from its predecessors in this project, and both are described below: the speakers are candidates for an office rather than delegations representing states, which forced a different analytical frame (see the frame note); and the format is a moderated debate rather than the chaired, sequential-statement format the pipeline is calibrated for.

Pipeline at a Glance
Stage 1
Discover
Locate the asset on transcripts.un.org
Stage 2
Fetch + convert
Portal JSON → attributed markdown
Stage 2b
Normalise names
Check every speaker against official UN sources
Stage 3
Analyse
Code candidates on office theory + two axes
Stage 4
Verify quotes
Audio-check every quote vs. the recording
Stage 5
Synthesise
Consensus, fault lines, commitment ledger
Stage 6
Publish
One interactive HTML readout

Each stage produces a named file on disk, so any claim on the readout can be walked back to its source. The transcript, the source-analysis notes and the HTML live under the project's transcripts/secretary-general/ and readouts/ folders.

Tools Used

The transcript came from the UN's own portal, so no recording or first-pass speech-to-text tooling was needed to produce the source text. The verification stage, when run, downloads the meeting audio and runs a local speech-to-text model against it; those tools are listed here for completeness.

StageToolWhat it isRole here
Discover / fetch / convert fetch_un_transcripts.py Purpose-built Python script (stdlib only) Downloaded the meeting JSON and converted it to speaker-attributed markdown.
Source transcripts.un.org Official UN transcripts portal (ASR) Supplied the raw transcript with built-in speaker attribution and per-sentence timestamps.
Name normalisation un.org selection page + PGA letter Official UN sources on the selection and appointment process Authoritative spellings and titles for all six candidates, used to correct the ASR renderings.
Verify — audio UN Web TV / Kaltura VOD Official UN video archive (Kaltura partner 2503451) The recording against which every quote was audio-verified. Live entry 1_hkyf9mo0 → VOD 1_qth9jlfl, English flavor 1_cr68e9m4.
Verify — slice ffmpeg Audio/video toolkit Cuts a short window from the MP4 around each quote's JSON timestamp.
Verify — transcribe whisper.cpp (large-v3-turbo) Local CUDA speech-to-text (projects/whisper-local/) Independently transcribes each window so the quote is compared against a second speech-to-text pass, not just the portal ASR.
Analyse + orchestrate + build Claude Code (Opus 5) AI analysis and coding assistant Extracted and coded positions, drafted the briefing, and rendered the HTML.

How Claude Code was used

Claude Code read the full attributed transcript, extracted each candidate's stated position verbatim, coded those positions on the readout's axes, checked candidate identities against official UN sources, drafted the structured briefing and rendered it into the interactive HTML page, reusing the design system established by the earlier readouts. The substantive judgements — what each candidate meant, where they sit on each axis, the briefing wording — are the analyst's; the assistant did the extraction, the consolidation and the build. The division of labour is spelled out in the limitations section.

Stage 1 — Discovery

The event was supplied directly as a portal URL rather than found by search: asset/k1h/k1hkyf9mo0. Informal meetings and special events generally carry asset-ID slugs rather than the structured meeting-record slugs used for Security Council and General Assembly sessions, so there is no S/PV or A/PV number to key on here.

The portal metadata confirmed the event's identity, duration (1h 49m), the convening arrangement (the Office of the President of the General Assembly with Bloomberg), and listed the nominees with their nomination dates. Its companion video sits on UN Web TV as Kaltura asset k1h/k1hkyf9mo0 (entry 1_hkyf9mo0).

New group created. No existing group covered the selection of the Secretary-General, so transcripts/secretary-general/ was created with a profile block recording its type, its time-series intent and its format. The reasoning behind those settings is in the frame note.
Stage 2 — Fetch & Convert

The meeting was fetched into the new group and converted to attributed markdown:

python pipeline/fetch_un_transcripts.py fetch asset/k1h/k1hkyf9mo0 --silo secretary-general
python pipeline/fetch_un_transcripts.py convert transcripts/secretary-general/2026-07-23_k1hkyf9mo0.json

The portal's JSON nests the useful fields — title, summary and topic taxonomy under metadata, the statements under transcript.data, and per-sentence word timestamps under each statement's paragraphs[].sentences[]. The conversion emitted 2026-07-23_k1hkyf9mo0_attributed.md: one heading per speaker turn with attribution and timestamp, followed by that speaker's text.

Conversion produced 196 statements across 17 speaker labels. The high statement count relative to the Security Council briefing is a direct consequence of the format: moderators interject constantly, ask follow-ups and enforce time, so turns are short and numerous.

Format mismatch, handled explicitly. The project's pipeline is calibrated for chaired, sequential-statement formats. This is a moderated debate: six speakers answer the same questions in rotation, plus individually targeted and audience questions. That is closer to the panel adaptation used for the HLPF readouts than to a Council briefing, but it is not that either — a panel has independent experts talking about a topic, whereas here six people are competing for the same job and answering identical prompts. The comparative structure is an asset rather than a problem: it produces a genuine like-for-like comparison, which is why the readout is organised around how the candidates differ on shared questions.
Dropped as procedural noise. Moderator hand-offs, timing warnings and "please wrap it up" exchanges; the broadcast open and the Bloomberg sign-off; the applause markers and the walk-on; and the audio-quality exchange in which one candidate asked for a question to be repeated. That last one is noted in the source file because it explains why her answer initially addressed only part of the question.
Stage 2b — Name Normalisation (a stage this meeting forced)

Every readout so far has carried an ASR-flag list for mangled proper nouns. This meeting made that a first-class stage rather than a footnote, because the ASR mishears all six candidate names, and a readout that misnames the people it is about would be worthless.

Each name was checked against the UN's own selection-and-appointment page and the President of the General Assembly's letter convening the town hall. The corrections:

Official spellingNationalityASR rendering in the transcript
Rebeca GrynspanCosta Rica"Rebecca Greenspan" throughout — the worst error in the transcript, and a real person's name replaced with a different real name
Carolyn Rodrigues BirkettGuyanaSix variants including "Rodriguez-Burkett", "Rodriguez-Bercat", "Rodriguez-Bercániz", "Rodriguez-Piquet"; "Caroline" for "Carolyn"
Macky SallSenegal"Sol", "Saul", "Sahle"; one hand-off garbled into a non-existent name
Rafael Mariano GrossiArgentina"Grassi"
María Fernanda EspinosaEcuador"Espinoza"
Michelle BacheletChileName largely correct; speaker function inconsistent between turns

Two further normalisations were applied on the same basis. The transcript renders what is almost certainly UN80 as "UNAID" and "UNAT" in two candidates' closing statements; a third candidate says "UN80" correctly in the same section, which confirms the referent. And one candidate's reference to "Unity for Peace" is the General Assembly's Uniting for Peace procedure. Both are corrected in the readout and flagged in the source notes.

One speaker's words passed through interpretation. Macky Sall spoke in French throughout. The portal transcribes the English interpretation, so his text is the product of a two-step chain — live interpreter, then machine transcription. His positions are directionally reliable, but his wording is not verbatim in the way the English speakers' is. The readout says so at the top of the page and again at his quote, and no load-bearing claim rests on his exact phrasing.

Audience questioners' personal names are ASR-rendered and several are low-confidence. The readout therefore names the state or organisation each questioner represented, which is stated clearly on the record, and treats the personal names as approximate in the source notes only.

Stage 3 — Analysis & Coding

Each candidate's stated position was extracted verbatim and sorted into comparable positions. The working notes are kept in readouts/sg-townhall-2026-07-source.md, which records the consensus points, the fault lines, the outliers and the per-candidate coding, each anchored to a quote.

How positions were coded

Each candidate was placed on axes drawn directly from what they said (see the frame note for why these axes and not a support/oppose spectrum):

  • Theory of the office (X): where the candidate locates the Secretary-General's power — convener (the leverage is bringing actors to a table), broker (the leverage is direct, persistent negotiation with the parties), or administrator (the leverage is running the institution well and serving member states with better information). These are kinds, not a scale: left-to-right on the plot carries no ranking, which is a deliberate departure from the earlier readouts where the X-axis ran from one pole to its opposite.
  • Selectable Y: candour about constraint — how explicitly the candidate says the office is limited and that reform depends on member states (high / mid / low); or reform posture — structural (change the business model and incentives), continuity (complete the reform under way), or sceptical (distrust reform rhetoric until delivery proves it).

Colour repeats the X-axis grouping rather than encoding a separate camp variable, because with six speakers a second colour dimension would add noise rather than signal. Where a candidate did not state a position on a dimension, it would be marked silent rather than guessed; here all six answered the core common questions, so nothing is silent on the office-theory axis.

Who is coded and who is not. The President of the General Assembly and the two moderators are framing voices and are not coded — the same treatment the Secretary-General received as a framing presence in the UN80 readout. The six audience questioners are recorded because their questions set the agenda, but they are not placed on the candidate axes.
Stage 4 — Quote Verification (audio)

The portal transcript is machine ASR, so every quote destined for the page was checked against the actual meeting audio before publication rather than flagged as provisional. This is a mandatory pipeline stage. The full method, escalation ladder and run log live in pipeline/quote-verification.md.

The method

  1. Resolve the recording. A baseEntry/get on the live entry 1_hkyf9mo0 returned the recorded VOD entry 1_qth9jlfl. getPlaybackContext enumerated the flavors.
  2. Download the English audio via the Kaltura playManifest URL for that flavor — a 54 MB audio-only MP4.
  3. Slice each quote's window. For each of the twelve quotes, ffmpeg cut a window centred on the sentence's JSON start timestamp.
  4. Transcribe independently with whisper-cli.exe (large-v3-turbo, flags -mc 0 -tp 0.0 -nf -nt), so each quote was compared against a second, independent speech-to-text pass rather than re-read from the portal ASR.
  5. Compare and judge. A match confirms the quote; a mismatch triggers a correction to the audio reading.
The English flavor is not paramsId 100 on this entry. Earlier runs in this project took the English audio flavor at flavorParamsId 100. This entry uses a different layout entirely: its language-tagged flavors sit in the 2732xxx range, with English at 2732162 (flavor id 1_cr68e9m4). Assuming paramsId 100 would have failed outright. The rule going forward is to enumerate the flavor list and select on language == English rather than on a remembered params id.
No drift, no offset. Unlike the Sudan/ICC run, where interpreted speakers' timestamps lagged the audio by 10 to 20 seconds, and the AI-at-UN run, where a re-cut recording forced a uniform −1119-second correction, every quote here landed on a first-pass slice — including the French-speaking candidate's interpreted segment. Candidate-debate audio on this entry is cleanly aligned with the JSON timestamps.

The result: 12 of 12 matched, 2 ASR garbles corrected

All twelve quotes were confirmed present in the recording. In two cases the machine transcript had mangled words that the audio makes clear, and the readout now carries the audio reading rather than the ASR text:

  • Grossi on AI governance. The ASR ran two sentences together, dropping a clause entirely: it rendered "There are certain guardrails that can be Some people say…" where the audio has "There are certain guardrails that can be applied, but we have to be extremely careful. Some people say…" The dropped clause is substantive — it is his caveat — so this correction changes what the quote conveys.
  • Grynspan on the greatest threat. The ASR produced "the erosion of the believed, what founded this organization, that was the great powers thought", which is not grammatical English. The audio has "the erosion of the belief that founded this organization, that was the great power thought". The sense was recoverable but the wording was not quotable as transcribed.

A third difference was noted and deliberately left alone: the ASR has "cutting costs" where the audio has "cutting cost". That is a transcription artefact with no effect on meaning.

SpeakerQuote (opening)AudioResult
Grynspan"The blockade of the Security Council is when the job… starts"1465smatch
Rodrigues Birkett"…does not have the luxury of doing, and that is not trying."1353smatch
Grossi"Impartiality is one of the most difficult traits of the job…"1633smatch
Bachelet"…if you do that, I will take all your funds."3269smatch
Grynspan"…cutting cost is not enough. Without a vision of change…"5963smatch
Grossi"Everybody's a reformer now. Let's see what happens on January 1st."6125smatch
Espinosa"Today, 72 member states have not yet paid their dues."6234smatch
Grossi"There are certain guardrails… we need an IAEA for AI"4548scorrected
Grynspan"…the belief that might is right… the erosion of the belief…"5341scorrected
Sall"…the liquidity crisis in reality is hiding a crisis of trust"3507s interpretedmatch
Espinosa"…not to confuse activity with impact"5564smatch
Rodrigues Birkett"We have the Multidimensional Vulnerability Index…"5861smatch

Both corrections landed on quotes that anchor fault lines — Grossi's is the anchor of the AI-governance divide and Grynspan's is her statement of the central threat. That is the argument for the stage: the two quotes most worth getting right were the two the machine transcript got wrong.

Stage 5 — Synthesis & Briefing

The coded positions were collapsed into a structured briefing following the locked house format, with one addition specific to this event:

  • Executive summary — what happened plus the defining divide, broken into a skimmable bullet list of the three theories of the office.
  • What was asked, and the process around it — the second must-read section. For a briefing this slot holds what the principal reported; for a candidate debate it holds the questions actually put, plus a note on where this event sits in the selection process, since the answers are meaningless without knowing that the decisive phase is the Security Council's closed-door straw polls.
  • Areas of consensus — unusually wide here, and stated as such.
  • Fault lines — the single analytical home of every position: where the office's power lies; what reform means; how candid to be about constraint; how to govern AI. Each names its poles and anchors; outliers box at the end.
  • Fault-line plot with a selectable Y-axis.
  • The first-100-days ledger — an addition for this format. The closing statements produced six specific, checkable lists of intended first actions. Rendered as a table, this is the most durable thing the town hall produced: whoever is appointed can be measured against it in 2027.
  • Talking points — the single verbatim home of the key quotes; body prose paraphrases them.
  • A reference grid — the per-candidate detail layer.

The anti-repetition rules hold: each position appears once in prose, with full detail only in the reference cards, and the page opens with only the first two sections expanded — a two-to-five-minute read for a high-level reader, with everything deeper collapsed behind the expand-all control.

Stage 6 — Publication (HTML)

The briefing was rendered as a single self-contained HTML page — a static file with inline CSS and JS, no build step, no external dependencies.

Interactive elements

  • Fault-line cluster plot. A two-axis scatter with the horizontal axis fixed to the theory of the office and the vertical axis toggling between candour about constraint and reform posture. Each dot is one candidate, with their summary on hover.
  • Searchable reference grid. A card per candidate, filterable by theory of the office and free-text-searchable across names, titles and summaries.
  • Commitment ledger table, horizontally scrollable on narrow screens.

Accessibility choices

  • A skip-to-content link and visible keyboard focus outlines.
  • Collapsible sections with an expand-all / collapse-all control.
  • A sticky table of contents that tracks the reader's position.
  • Plot dots are keyboard-focusable and carry accessible labels.

This methodology page reuses the same design system, so the readout and its method read as one family.

A Note on the Analytical Frame

Every prior readout in this project codes delegations by stance on a contested proposal. That frame does not fit this event, for two reasons, and saying so plainly is more useful than forcing it.

First, the speakers are candidates for an office, not delegations representing states. Nothing said here is a national position. One candidate does not speak for Chile, another does not speak for Senegal. Coding them as delegations would misrepresent the record, and the readout carries that warning in its footer.

Second, there is no contested proposal. This is a job interview conducted in public. The six were asked the same questions and largely agree on the diagnosis: the UN faces a crisis of trust that shows up as a crisis of cash, reform is imperative, and multilateralism is under strain. A consensus-versus-opposition axis would produce a near-uniform field with no signal — the same problem that made "supports UN80" non-diagnostic in the earlier readout, and "condemns the atrocities" non-diagnostic in the Sudan one.

The live variance is not whether the UN is in trouble but what each candidate thinks the office can actually do about it, and how much they concede it cannot. Hence the axes: where they locate the office's power, how candid they are about its constraints, and what they mean by reform. This choice is itself an analytical judgement, disclosed here so a reader can weigh it. A different analyst might draw the axes differently; the underlying transcript is the check.

Why this group is thematic with a bounded time series

The group is thematic — it is defined by a subject, the selection of the next Secretary-General, and that subject fans across the General Assembly, the Security Council and events convened by the President of the General Assembly. It is not defined by one speaking body, so it is not institutional.

Its time-series intent is planned, with a deliberate end date. The 2026 selection is a bounded, connected process: the candidates' informal dialogues sit upstream of this town hall, and the straw polls and appointment sit downstream. Tracking whether positions harden, converge or quietly drop across that sequence is exactly the kind of question a time series answers. Once a Secretary-General is appointed the cluster closes, and the group reverts to retrieval-only until the next cycle. This is the clearest case yet of the project's rule that a time series is a property some clusters earn rather than something every group has.

Provenance & Traceability

This is the short answer to "how do you know?" Each type of claim on the readout traces to a specific source.

Claim typeTraces toHow
Verbatim quotes in talking points and tooltips Portal ASR transcript Reproduced from the ASR text, then checked sentence by sentence against the Kaltura English-audio VOD (Stage 4). All 12 matched; 2 were corrected to the audio reading.
Candidate names, nationalities and titles un.org selection-and-appointment page; PGA town-hall letter Checked against official UN sources and corrected from the ASR renderings (Stage 2b).
Who said what (speaker attribution) Portal metadata + moderator hand-off cues Attribution supplied by the portal, cross-read against the moderators' named hand-offs in the transcript.
Selection-process context (straw polls, timeline) Public reporting on the selection process, outside the transcript The only material on the readout not derived from the meeting. Confined to the process note, and described in general terms rather than asserting specific dates as settled.
Office-theory, candour and reform coding sg-townhall-2026-07-source.md Extracted from the transcript; each placement anchored to a quote; unstated positions marked, not guessed.
Consensus points, fault lines, outliers, commitment ledger sg-townhall-2026-07-source.md Synthesis of the coded positions into a structured briefing.
Section text and visualisations on the page The readout HTML file Rendered directly from the briefing; no new facts introduced at this stage.
Limitations & Honesty Notes

The method is transparent about where error can enter. None of the steps below were hidden; each was managed.

  • The transcript is machine ASR, not an official record. It mishears names heavily — all six candidates, plus several audience questioners whose names remain approximate. Names have been corrected against official UN sources and the quoted passages were audio-verified, but non-quoted ASR text elsewhere remains provisional. The Stage 4 run found the machine transcript had garbled two of the twelve quotes badly enough to change or destroy their meaning, which is a fair indication of the error rate in the unverified remainder.
  • One candidate's words passed through interpretation. Macky Sall spoke in French; his English text is interpreter output, then machine-transcribed. Directionally reliable, not verbatim.
  • The one-minute format compresses positions. Candidates were cut off mid-sentence several times. Where a position is truncated in the record, the readout says so rather than completing the thought — but a one-minute answer is a thin basis for characterising anyone's programme, and the readout should be read as a record of what was said on this occasion rather than a full account of any candidate's platform.
  • Coding is interpretive, not official. The office-theory, candour and reform axes are an analytical reading, disclosed in the frame note, not a UN classification. Reasonable analysts would place some candidates differently — particularly on candour, which is the most judgement-laden of the three.
  • These are not state positions. Worth repeating because the visual grammar of this project's readouts otherwise implies it: the cards and dots are individuals speaking for themselves.
  • Process context comes from outside the transcript. The straw-poll and timeline material in the process note is not in the meeting record. It is included because the readout is unusable without it, and it is kept general rather than asserting precise dates.

What was automated versus human-checked

  • Automated Transcript fetch, JSON-to-markdown conversion, first-pass position extraction, name cross-checking against official sources, the entire quote-verification workflow (VOD resolution, audio download, ffmpeg slicing, whisper transcription, comparison), and the briefing and HTML build.
  • Human-checked The reading of the transcript for meaning; the coding judgements; the briefing wording. The human's only gate is reading the final HTML, per the pipeline's division of labour.
Replication Runbook

To repeat this for the next session in the secretary-general group, or any other portal-sourced candidate debate. All commands run from the project folder so the relative transcripts/ paths resolve. See pipeline/un-transcripts.md for the fetcher guide and pipeline/quote-verification.md for the verification method.

1. Discover the event

Special events and informal meetings usually carry asset-ID slugs rather than meeting-record slugs, so there may be no PV number to key on. Note both the transcript asset slug and the UN Web TV / Kaltura entry for later verification.

2. Fetch and convert

python pipeline/fetch_un_transcripts.py fetch asset/<id> --silo secretary-general
python pipeline/fetch_un_transcripts.py convert transcripts/secretary-general/<file>.json

Drop the procedural noise: moderator hand-offs, timing warnings, broadcast open and sign-off, applause markers.

3. Normalise every proper noun before analysing

Do this first, not last. Check all candidate names, nationalities and titles against the UN selection-and-appointment page and the convening letter. Check institutional shorthand too — reform-process names are frequently mangled. Record every correction in the source notes so a reader can see what was changed and why. Identify any speaker working through interpretation and flag them.

4. Analyse and code

  1. Extract each candidate's stated position verbatim, organised by the question they were answering — the common questions give the like-for-like comparison.
  2. Code each on the axes; mark unstated positions silent.
  3. Capture the closing first-100-days statements separately; they are the most checkable output.
  4. Save the working notes as <readout-slug>-source.md, with an anchor quote per placement plus an ASR-flag list.

5. Verify quotes against the audio (mandatory, do not skip)

  1. Resolve the VOD entry and the English audio flavor; check the flavor list rather than assuming paramsId 100.
  2. Download the English-audio MP4 via the Kaltura playManifest URL.
  3. For each position-critical quote, ffmpeg-slice a window at the JSON sentence timestamp and transcribe with whisper large-v3-turbo.
  4. Compare to the ASR quote; on misalignment widen the window. Start wide for interpreted speakers, who drift 10 to 20 seconds.
  5. Update the readout, source notes, group index and this page from pending to verified, with timestamps.

6. Synthesise and publish

Follow the house format, adding the commitment-ledger section for candidate debates. Serve the finished page locally and check it in a browser before publishing.