About Semaphore
Spotting mandate signals in resolutions of the UN General Assembly.
Why "Semaphore"?
In the age of steam, railway semaphore signals stood alongside the tracks — mechanical arms raised or lowered to tell approaching trains whether the line ahead was clear, cautioned, or blocked. A driver reading the semaphore at speed had to interpret a small set of well-defined positions to make a critical decision: proceed, slow down, or stop.
That is surprisingly close to what this tool does. Every session, the General Assembly adopts hundreds of resolutions — long, formal texts that bury actionable mandates deep inside operative paragraphs. Semaphore reads those paragraphs and raises a flag when it spots language that signals a concrete follow-up: a report requested, a meeting convened, a process launched.
Like its railway namesake, Semaphore doesn't decide what to do with the signal — it just makes sure you see it.
What are Signals?
Signals are specific phrases in UN General Assembly documents that indicate a mandate, request, or procedural action. Semaphore scans the operative paragraphs of resolutions, draft proposals, and decisions, and flags every paragraph that contains one or more trigger phrases.
Each signal corresponds to a category of action — requesting a report, scheduling a high-level event, establishing a consultative process, or placing something on a future agenda.
Signal Types
Decisions about agenda items, scheduling of future consideration, or requests for inclusion in upcoming sessions.
Trigger Phrases
References the President of the General Assembly, high-level meetings, interactive dialogues, or multistakeholder events.
Trigger Phrases
Procedural arrangements: co-facilitators, co-chairs, or informal consultations.
Trigger Phrases
Requests for reports from the Secretary-General or other bodies to the General Assembly.
Trigger Phrases
Granting of observer status to an entity.
Trigger Phrases
How it Works
Discover
New resolutions and draft proposals are discovered automatically from the UN Official Document System.
Extract
PDF documents are parsed and operative paragraphs — the numbered action items in the resolution body — are extracted.
Detect
Each paragraph is scanned for trigger phrases. When a phrase matches, the corresponding signal is raised.
Link
Resolutions are linked back to their source draft proposals, connecting adopted text to its committee of origin.
Publish
Results are published here — filterable by session, signal type, and document type — updated automatically after each pipeline run.
Configuration
Signals are defined in config/checks.yaml. Each entry has a signal name and a list of phrases to match. Matching is case-insensitive. A single paragraph can trigger multiple signals if it contains phrases from different categories.
The pipeline runs on GitHub Actions — hourly for new documents, and on-demand for historical sessions.