Overview & Purpose
This document records how the UN80 briefing readout was produced. The readout summarises the Secretary-General's informal briefing to the General Assembly on the UN80 Initiative, held on 12 May 2025.
It exists for two reasons:
- Replication. This readout is the first in a four-meeting longitudinal arc tracking the UN80 negotiation. The same treatment will be applied to the later rounds, 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 pipeline differs from earlier readouts in one important respect: 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 that must be verified before quotes are trusted.
The work moved through six stages: the meeting was discovered on the portal, its transcript fetched and converted to attributed markdown, verified against the source, analysed into delegation positions, synthesised into a structured briefing, and published as a single interactive HTML page with a companion methodology record. Every stance on the readout traces to a verbatim passage in the transcript. Where a delegation did not state a position on a coded dimension, it is marked silent rather than guessed (the project's no-fabrication rule).
Pipeline at a Glance
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 all live under the project's transcripts/un80/ and readouts/ folders.
Tools Used
Because the transcript came from the UN's own portal, this readout needed no recording or speech-to-text tooling. The source is a public UN transcript; the fetch and conversion are handled by a small purpose-built script, and the analysis and build were orchestrated with an AI assistant, named openly below.
| Stage | Tool | What it is | Role here |
|---|---|---|---|
| Discover / fetch / convert | fetch_un_transcripts.py | Purpose-built Python script (stdlib only) | Queried the portal, 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 (name, country, function, bloc) and statement timestamps. |
| Cross-check | UN Web TV | Official UN video archive | The recording against which flagged quotes are audio-verified. |
| Analyse + orchestrate + build | Claude Code (Opus 4.8) | AI analysis and coding assistant | Extracted and coded positions from the transcript, drafted the briefing, and rendered the HTML. |
How Claude Code was used
Claude Code read the full attributed transcript, extracted each delegation's stated position verbatim, coded those positions consistently on the readout's two axes, drafted the structured briefing, and rendered it into the interactive HTML page — reusing the design system established by earlier readouts. Opus 4.8 was chosen over the standard model because this is a dense multi-bloc session (30 speakers) where attribution and nuance matter. The substantive judgements — what each delegation meant, where it sits on each axis, the briefing wording — are the analyst's; the assistant did the extraction, consolidation and build. The automated-versus-checked split is in the limitations section.
Stage 1 — Discovery
The UN transcripts portal carries ASR transcripts for the preceding 365 days. The full UN80 series was located with a title-scoped query:
python pipeline/fetch_un_transcripts.py discover --q "UN80" --transcribed-only
This returned an unbroken series of transcribed UN80 meetings from May 2025 onward — the plenary briefings plus the Working Group negotiation. From that series, four in-format rounds were selected for the longitudinal arc; this readout covers the first, the 12 May 2025 SG launch briefing (portal asset k1n/k1nnav1rew).
Stage 2 — Fetch & Convert
The selected meeting was fetched and converted to attributed markdown:
python pipeline/fetch_un_transcripts.py fetch k1n/k1nnav1rew --silo un80
python pipeline/fetch_un_transcripts.py convert transcripts/un80/2025-05-12_k1nnav1rew.json
The portal's JSON nests the useful fields — title and summary under metadata, the statements under transcript.data, and the topic taxonomy under transcript.topics. The conversion script reads those and emits 2025-05-12_k1nnav1rew_attributed.md: one heading per speaker turn, each carrying the portal's attribution (name, function, country or bloc) and a timestamp, followed by that speaker's text.
For this meeting the conversion produced 54 statements across 30 speakers. The portal also carries a UN-provided summary and a ten-topic taxonomy, which were used as orienting context but not as a substitute for reading the statements themselves.
Stage 3 — Verification
The attributed transcript was read end to end. Because the text is machine-generated ASR, this stage has two jobs:
- Read for meaning. Confirm that each delegation's position is legible in the ASR text despite transcription noise, and that the speaker attribution the portal assigned is internally consistent with the chair's handover lines in the transcript.
- Flag every quote for audio check. Any verbatim line destined for the readout — talking points, tooltips, the executive summary — is marked for a final check against the UN Web TV recording before the readout is published externally. This readout carries that flag prominently; the quotes reproduce the ASR text and are provisional until that check is done.
The ASR portal's accuracy was previously benchmarked against an independently verified transcript of a different meeting, with matching results on position-critical passages — which is why the portal is trusted as a drafting source. It does not remove the per-quote audio check.
Stage 4 — Analysis & Coding
With the attributed transcript in hand, each delegation's stated position was extracted verbatim and sorted into comparable positions. The working notes are kept in readouts/un80-briefing-2025-05-source.md, which records the consensus points, the fault lines, and a per-delegation coding table, each row anchored to a quote.
How positions were coded
Each delegation was placed on two axes drawn directly from what it said (see the note on the analytical frame for why these axes and not a support spectrum):
- Sovereignty insistence (X): how strongly the delegation insists the process stay Member-State-led and routed through the Fifth Committee / ACABQ —
ms-led,mid(endorses both process and SG action), orsg-latitude. - Safeguard vs. cut-appetite (Y): whether the delegation foregrounds protecting development mandates and the vulnerable —
safeguard,neutral, orcut-appetite. A second Y view, cut appetite (low / moderate / high), surfaces the same tension directly.
Where a delegation did not state a position on a dimension in this meeting, it was marked accordingly rather than assigned a guess. Individual states that spoke in national capacity (Austria, Switzerland, Romania, Morocco, Egypt, Mexico) are coloured by regional affinity and flagged as national-capacity statements in the reference cards.
Stage 5 — Synthesis & Briefing
The coded positions were collapsed into a single structured briefing, organised into:
- Executive summary — what happened plus the defining divide, broken into a skimmable bullet list of poles so the two-minute reader gets the whole map.
- What the SG proposed — the three workstreams and the concrete early moves, since this meeting is a briefing, not only a debate.
- Areas of consensus — the points cutting across all blocs.
- Fault lines — the single analytical home of every position. Each fault line names its poles, who anchors them, and one anchor quote per side; camp detail lives inside the relevant fault line rather than in separate camp sections.
- A stance table covering every delegation that spoke, each with a one-line summary — the per-delegation detail layer.
- Talking points drawn from verbatim statements, each flagged for audio verification — the single verbatim home of the key quotes; body prose paraphrases them.
This briefing maps directly onto the sections of the final HTML. Two structural rules keep it brief: each position appears once in prose (a delegation is named at most once in the fault-lines section, with full detail only in the reference cards), and the page opens with only the executive summary and the proposal section expanded — a two-to-five-minute read for a high-level reader, with everything deeper collapsed behind an expand-all control for analysts.
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 where the horizontal axis is fixed to sovereignty insistence (Member-State-led → SG-latitude) and the vertical axis switches between "safeguard vs. cut-appetite" and "cut appetite." Each dot is one delegation, coloured by regional bloc, with the verbatim position on hover.
- Searchable reference grid. A card per delegation, filterable by sovereignty camp and by safeguard/cut position, with free-text search across names and summaries.
- Sequence banner. A four-step marker placing this readout as round 1 of the UN80 arc, so a reader can see where it sits in the negotiation.
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.
This methodology page reuses the same design system, so the readout and its method read as one family.
A Note on the Analytical Frame
Earlier readouts coded delegations on a support / cautious / skeptical spectrum, which suited a policy consultation where states genuinely divided over whether to back a proposal. This meeting is different: every delegation on the record welcomed the UN80 Initiative in principle. There was no blocking bloc. Coding "do you support UN80" would have produced a near-uniform field with no signal.
So the axes were chosen to capture the tensions that were actually live — who controls the reform (the sovereignty axis) and what must be protected from it (the safeguard axis). This choice is itself an analytical judgement, disclosed here so a reader can weigh it. The coding table in the source notes shows the quote behind each placement. A different analyst might draw the axes differently; the underlying transcript is the check.
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 type | Traces to | How |
|---|---|---|
| Verbatim quotes in talking points and tooltips | Portal ASR transcript (..._attributed.md) |
Reproduced from the ASR text; flagged for a final audio check against the UN Web TV recording before external publication. |
| Who said what (speaker attribution) | Portal metadata + chair handover cues | Attribution supplied by the portal, cross-read against the chair's handover lines in the transcript. |
| Sovereignty / safeguard coding per delegation | un80-briefing-2025-05-source.md |
Extracted from the transcript; each row anchored to a quote; unstated positions marked, not guessed. |
| Consensus points, fault lines, stance table | un80-briefing-2025-05-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. This is the single biggest caveat. Portal ASR mishears names, acronyms and figures, especially where live interpretation overlays the original speaker. The mitigation is the per-quote audio check (Stage 3); until that check is done for a given quote, it is provisional. The readout carries this flag prominently rather than presenting ASR text as verified.
- Speaker attribution is the portal's. It is cross-read against the chair's handover cues but not independently re-derived from the audio. One turn in the transcript was tagged "unidentified speaker" by the portal and is treated as such.
- Summarisation can flatten nuance. Reducing a multi-minute statement to one line drops detail. The verbatim quotes are retained alongside the summaries so a reader can go back to the wording.
- Coding is interpretive, not official. The sovereignty and safeguard axes are an analytical reading, disclosed in the frame note, not a UN classification. Positions not stated are marked, not inferred.
What was automated versus human-checked
- Automated Portal discovery, transcript fetch, JSON-to-markdown conversion, first-pass position extraction.
- Human-checked The reading of the transcript for meaning; the coding judgements; the briefing wording; the published page. Per-quote audio verification against the recording is the outstanding pre-publication step.
Replication Runbook
To repeat this for the next round in the UN80 arc (16 Sep 2025, 19 Jan 2026, 29 Jun 2026) or any other portal-sourced meeting. All commands run from the project folder so the relative transcripts/ paths resolve. See pipeline/un-transcripts.md for the fetcher guide.
1. Discover the meeting
python pipeline/fetch_un_transcripts.py discover --q "UN80" --transcribed-only
Use a title-scoped --q or a date range; avoid full-text keyword search for finding a series. Pick the asset slug for the round you want.
2. Fetch and convert
python pipeline/fetch_un_transcripts.py fetch <slug> --silo un80
python pipeline/fetch_un_transcripts.py convert transcripts/un80/<file>.json
Produces <date>_<slug>_attributed.md and updates transcripts/un80/INDEX.md.
3. Verify (do not skip)
Read the attributed markdown end to end. Confirm each position is legible in the ASR text and the portal's attribution is consistent with the chair's handovers. Flag every quote you intend to use for a final audio check against the UN Web TV recording. This is a manual step with no command.
4. Analyse and code
- Extract each delegation's stated position verbatim.
- Code each on the two axes (sovereignty; safeguard / cut-appetite); mark unstated positions.
- Save the working notes as
<readout-slug>-source.md, one coding row per delegation with an anchor quote.
5. Synthesise the briefing
Collapse the coded positions into the seven-section structure: executive summary (headline paragraph plus a bullet breakdown of the defining divide), what the SG (or principals) proposed, areas of consensus, fault lines (poles + anchors + one quote per side; camp detail folded in, not in separate sections), the fault-line plot, audio-flagged talking points, and the full stance reference grid.
Three rules keep the readout brief. One prose home per position: a delegation is named at most once in the fault-lines section; anything more belongs in its reference card. Quotes live once: talking points hold the verbatim text; body prose paraphrases with a pointer. Tiered opening: only the executive summary and the proposal section are expanded on load — the two-to-five-minute path; everything else starts collapsed.
6. Publish
Render the briefing into one HTML page, reusing the design system and the fault-line plot data structure (one entry per delegation with sovereignty, safeguard, cut, and bloc fields). Name it un80-briefing-<YYYY-MM>.html and cross-link it with this methodology page. The canonical structural example is readouts/un80-briefing-2025-05.html.
<slug>.json → <date>_<slug>_attributed.md → <readout-slug>-source.md → the readout HTML page.