Methodology
How releases are found, checked, classified and counted — and what the numbers do and do not mean.
Parties and sources
The site monitors the official websites of 9 parties: Alliance Party of Northern Ireland, Democratic Unionist Party, Sinn Féin, Ulster Unionist Party, Social Democratic and Labour Party, Traditional Unionist Voice, Green Party Northern Ireland, People Before Profit, Aontú. Parties are stored independently of their websites, so a party can have several current and historical sources, and a change of website does not change its record. The current list of sources and their health is on the coverage page.
This is a party-level record. Named politicians are read only to work out which part of a party issued a release; there are no pages, rankings or statistics for individual representatives.
How releases are discovered
No party website is assumed to have a complete feed, sitemap or reliable tags. Each source uses one of several discovery methods, with fallbacks:
- RSS and Atom feeds (including paginated feeds) for the latest releases;
- XML sitemaps, sitemap indexes and Google News sitemaps;
- website APIs (WordPress REST) that list every post with exact publication dates;
- news listing pages and general link discovery;
- Internet Archive indexes (Wayback CDX) to find releases from earlier websites or pages no longer listed.
Current news is checked every two hours. If a party’s main source fails, or finds nothing when the party normally publishes, every other source for that party is checked straight away. If a feed, sitemap or API moves, the site looks for a replacement (feed links on the home page, sitemaps listed in robots.txt, the same path on a new domain) and switches only after the replacement has been fetched and validated; every change is logged. A daily reconciliation re-reads complete listings to catch anything missed, re-checks recent releases for changes and checks archive captures.
The publication date is taken from the website’s own record (API, feed or news sitemap) where available, then from the page’s structured data, metadata or visible date. The date a release was found is recorded separately and is never used as its publication date. Where no date can be found the release is shown as undated and left out of time-based statistics; if the Internet Archive has a capture, the earliest capture date is shown as the latest possible publication date.
Historical coverage
The record starts on 13 May 2022, the start of the current Assembly mandate. A historical import works through every source’s full listing and the Internet Archive’s index, with saved checkpoints so it can pause and resume. Releases found long after publication keep their real publication date, are marked as found later, and are excluded from the default RSS feed so that subscribers are not flooded with old material.
Northern Ireland relevance
Sinn Féin, People Before Profit and Aontú organise in both Northern Ireland and the Republic of Ireland. Only releases that are Northern Ireland party output are counted. Northern Ireland parties may of course comment on UK-wide and international matters: an Alliance statement on Ukraine or a DUP statement on UK taxation counts; a Sinn Féin statement about housing in Cork does not; a Sinn Féin statement about cross-border health care involving Northern Ireland does. The rules, in order:
- Releases from parties that organise only in Northern Ireland are included (source rule).
- Releases published in a source section for Northern Ireland representatives (for example Sinn Féin’s “Assembly members” and “MPs” categories) are included (source rule).
- Otherwise Jev assesses the release itself (no keyword filter: mentioning Dublin does not exclude a release, and a Belfast address in a footer does not include one). It is included if it is the statement of a Northern Ireland representative (≥ 0.6), or if Northern Ireland, or a cross-border matter that includes it, is a real subject (≥ 0.7); excluded if it is about the Republic only (Northern Ireland ≤ 0.25 and Republic-only ≥ 0.6), or comes from the party’s Republic organisation on a matter with no Northern Ireland dimension.
- Anything else gets a second, blind assessment with more context about where it was published (included at ≥ 0.75, excluded at ≤ 0.25).
- Releases still uncertain are held in an internal review queue and are not counted until a person decides.
Each release records its decision, a reason code and a confidence level. The reasons used are: Published by a party that organises only in Northern Ireland. · Published in the source’s Northern Ireland representatives’ section (e.g. Assembly members or MPs). · Issued by a Northern Ireland representative. · The release concerns Northern Ireland or a cross-border matter that includes it. · The release concerns only the Republic of Ireland. · Issued by the party’s Republic of Ireland organisation on a matter without a Northern Ireland dimension. · A second assessment with source context found it to be Northern Ireland output. · A second assessment with source context found it not to be Northern Ireland output. · Northern Ireland relevance could not be determined with confidence; held for review and excluded from totals. · Included after review. · Excluded after review.
The questions put to Jev
concerns_ni(noul): Does `text` concern Northern Ireland? It does if it deals with Northern Ireland people, places, services, institutions or politics; with a cross-border or all-island matter that includes Northern Ireland (for example cross-border health care, North–South bodies, the border, Irish unity, or an NI election); or if it is a statement by a Northern Ireland representative (an MLA, an MP for a Northern Ireland constituency, or a Northern Ireland councillor), whatever its subject. A mention of a Northern Ireland place only in an address, sign-off, footer or list of offices does not count.roi_only(noul): Is `text` exclusively about matters in the Republic of Ireland (for example Dáil business, the Irish Government, a county or city in the Republic, the HSE, Gardaí or Irish local councils), with no Northern Ireland or cross-border dimension? Mentioning Dublin, the Dáil or the Irish Government does not by itself make a text Republic-only: a text about North–South cooperation or Irish unity is not Republic-only.speaker(choice): Who is the main person speaking or quoted on behalf of the publisher in `text`, judged from titles and roles stated in the text? Choose "unclear" if no role is stated.geo_ni(noul): Does `text` deal with Northern Ireland — its people, places, institutions (Assembly, Executive, councils, PSNI), politics, or how a policy applies in Northern Ireland?geo_roi(noul): Does `text` deal with the Republic of Ireland — its places, institutions (Dáil, Seanad, Irish Government, Irish councils, Gardaí, HSE), politics or policies?geo_uk(noul): Does `text` deal with UK-wide matters — Westminster, the UK Government, UK-wide taxes, benefits, laws or the UK economy?geo_international(noul): Does `text` deal with international matters beyond the UK and Ireland — other countries, international conflicts, the EU as an institution, the United States or international organisations?geo_cross_border(noul): Does `text` deal with a matter that concerns both Northern Ireland and the Republic of Ireland together — cross-border services or travel, all-island bodies or policy, North–South cooperation, the border, or Irish unity?ni_output(noul): The publisher organises in both Northern Ireland and the Republic of Ireland. `context` describes where the release was published and any section labels. Should `text` be counted as part of the publisher's Northern Ireland political output? Count it if Northern Ireland is a real subject (including cross-border or all-island matters that include Northern Ireland), or if it is issued by or for the Northern Ireland part of the organisation. Do not count it if it is about the Republic of Ireland only, or is an international or general statement issued by the Republic part of the organisation.
Classification
Releases are classified by Jev (typesafe/jev, a structured-evaluation model on Cloudflare Workers AI), which answers typed questions with calibrated probabilities. The same questions are asked of every party. Before subjective questions (topic, purpose, tone) are asked, the publishing party’s name is replaced with “the party”. The questions describe what a release observably does; none asks about motives, and none judges whether a party is right.
- Main topic (one of 17) and any other topic the release substantially covers (probability ≥ 0.5), plus a subtopic where one fits;
- Communication type: Policy announcement, Policy proposal, Criticism, Response to an event, Call for action, Parliamentary or governmental update, Campaign statement, Congratulations or recognition, General commentary;
- Geographic scope (any of Northern Ireland, Republic of Ireland, UK-wide, International, Cross-border / all-island; ≥ 0.5);
- whether it contains a concrete proposal or commitment; whether it is proactive / reactive / mixed; whether it criticises another party or institution and whom (Another Northern Ireland political party or its representatives; The Northern Ireland Executive, a minister or department; The UK Government or a UK minister; The Irish Government or an Irish minister; A public body, agency or council; A business, employer or industry; Someone else); and its broad tone (informative, constructive, concerned, critical, strongly adversarial, celebratory).
Mentioning health does not make a release a health policy proposal, and criticising another party does not make a release divisive. Answers are validated against the allowed options; malformed answers are retried and never stored. Each release records the model reported, the rubric version, a short rationale assembled from the answers, and a confidence level (high, medium or low). A release classified from its opening paragraph only (because the full page could not yet be read) is marked as such and reclassified once the full text is available.
The short description is written by a separate summarising model, because Jev answers questions but does not write text. A small, low-cost model (@cf/openai/gpt-oss-120b) writes it first; if its output breaks the rules (too long, not a description, or copying eight or more consecutive words of the release), a larger model (@cf/meta/llama-3.3-70b-instruct-fp8-fast) writes it instead. The model used is recorded on each release. The instructions are to describe neutrally, not to evaluate and not to quote: Reasoning: low. You write short summaries for a public, politically neutral archive of press releases from Northern Ireland political parties. Return a JSON object with two fields. "description": one or two sentences, 120 to 280 characters, saying specifically…
Every analysis question
primary_topic(choice): Which policy topic is `text` mainly about? Judge by its main subject, not by passing mentions. Use "other" only if no topic fits.topic_health(noul): Is health a substantial subject of `text` (not merely a passing mention)? Health: Health and social care services, hospitals, GPs, waiting lists, public health, mental health services and the health workforce.topic_education(noul): Is education a substantial subject of `text` (not merely a passing mention)? Education: Schools, early years, further and higher education, special educational needs, teachers and skills.topic_housing(noul): Is housing a substantial subject of `text` (not merely a passing mention)? Housing: Social and private housing, homelessness, housing supply, rents, planning for housing and housing conditions.topic_economy(noul): Is economy and employment a substantial subject of `text` (not merely a passing mention)? Economy and employment: Jobs, businesses, investment, wages, cost of living, trade, energy prices, tourism and workers’ rights.topic_public_finance(noul): Is public finance and taxation a substantial subject of `text` (not merely a passing mention)? Public finance and taxation: Budgets, public spending, taxes, rates, the block grant and fiscal arrangements.topic_justice(noul): Is justice and policing a substantial subject of `text` (not merely a passing mention)? Justice and policing: Policing, crime, courts, prisons, paramilitarism, violence against women and girls, and community safety.topic_environment(noul): Is environment and climate a substantial subject of `text` (not merely a passing mention)? Environment and climate: Climate change, pollution, water quality (including Lough Neagh), nature, waste and environmental governance.topic_agriculture(noul): Is agriculture and rural affairs a substantial subject of `text` (not merely a passing mention)? Agriculture and rural affairs: Farming, food, fisheries, animal health, rural communities and rural services.topic_infrastructure(noul): Is infrastructure and transport a substantial subject of `text` (not merely a passing mention)? Infrastructure and transport: Roads, public transport, planning, water and sewerage infrastructure, broadband and major capital projects.topic_welfare(noul): Is social security and welfare a substantial subject of `text` (not merely a passing mention)? Social security and welfare: Benefits, poverty, food insecurity, welfare mitigations, pensions and child poverty.topic_equality(noul): Is disability and equality a substantial subject of `text` (not merely a passing mention)? Disability and equality: Disability, equality and human rights, women’s rights, LGBTQ+ rights, race equality, the Irish language and Ulster-Scots as equality issues, and accessibility.topic_community_relations(noul): Is community relations and legacy a substantial subject of `text` (not merely a passing mention)? Community relations and legacy: Legacy of the Troubles, victims and survivors, inquests, flags, parades, bonfires, sectarianism and reconciliation.topic_constitutional(noul): Is constitutional affairs a substantial subject of `text` (not merely a passing mention)? Constitutional affairs: The constitutional status of Northern Ireland, Irish unity, the Union, Brexit, the Windsor Framework, the Good Friday Agreement and the operation of the institutions.topic_immigration(noul): Is immigration a substantial subject of `text` (not merely a passing mention)? Immigration: Immigration and asylum policy, refugees, migrant workers and the Common Travel Area.topic_local_government(noul): Is local government a substantial subject of `text` (not merely a passing mention)? Local government: Councils, council services, local rates, local facilities and council decisions.topic_international(noul): Is international affairs a substantial subject of `text` (not merely a passing mention)? International affairs: Foreign policy, conflicts and humanitarian crises abroad, the EU, the United States and international relations.subtopic(choice): Which subtopic best describes the main subject of `text`? Choose "none" if none fits well.communication_type(choice): What is the main purpose of `text` as a communication? Judge the purpose of the release as a whole. A release that mentions a policy is not necessarily a policy announcement; a release that criticises someone is "criticism" only if criticism is its main purpose.has_proposal(noul): Does `text` contain a concrete proposal or commitment — a specific policy, action, amendment, bill, scheme, spending commitment or measurable target that the party proposes, has tabled or commits to? General aspirations ("we want better services") do not count.proactivity(choice): Is `text` mainly the party's own initiative, or mainly a response to something that happened or was said or published by someone else?criticises_other(noul): Does `text` criticise another political party, a government, a minister, a public body, a business or another organisation or person?criticism_target(choice): Who is mainly criticised in `text`? Choose "none" if no one is criticised.tone(choice): What is the broad rhetorical tone of `text`? Describe the language used, not whether it is justified.geo_ni(noul): Does `text` deal with Northern Ireland — its people, places, institutions (Assembly, Executive, councils, PSNI), politics, or how a policy applies in Northern Ireland?geo_roi(noul): Does `text` deal with the Republic of Ireland — its places, institutions (Dáil, Seanad, Irish Government, Irish councils, Gardaí, HSE), politics or policies?geo_uk(noul): Does `text` deal with UK-wide matters — Westminster, the UK Government, UK-wide taxes, benefits, laws or the UK economy?geo_international(noul): Does `text` deal with international matters beyond the UK and Ireland — other countries, international conflicts, the EU as an institution, the United States or international organisations?geo_cross_border(noul): Does `text` deal with a matter that concerns both Northern Ireland and the Republic of Ireland together — cross-border services or travel, all-island bodies or policy, North–South cooperation, the border, or Irish unity?
Topics
- Health
- Health and social care services, hospitals, GPs, waiting lists, public health, mental health services and the health workforce. Subtopics: Waiting lists and access, Health workforce and pay, Hospital and local services, Mental health, Public health, Social care.
- Education
- Schools, early years, further and higher education, special educational needs, teachers and skills. Subtopics: Schools and funding, Special educational needs, Childcare and early years, Further and higher education, Teachers and school staff, Integrated and shared education.
- Housing
- Social and private housing, homelessness, housing supply, rents, planning for housing and housing conditions. Subtopics: Social housing, Private renting, Homelessness, Housing supply and ownership, Housing conditions.
- Economy and employment
- Jobs, businesses, investment, wages, cost of living, trade, energy prices, tourism and workers’ rights. Subtopics: Jobs and investment, Cost of living, Pay and workers’ rights, Trade and business regulation, Energy, Hospitality, retail and tourism.
- Public finance and taxation
- Budgets, public spending, taxes, rates, the block grant and fiscal arrangements. Subtopics: Executive budget and spending, Taxation, Funding settlement, Public sector pay.
- Justice and policing
- Policing, crime, courts, prisons, paramilitarism, violence against women and girls, and community safety. Subtopics: Policing, Crime and community safety, Violence against women and girls, Paramilitarism, Courts, prisons and legislation.
- Environment and climate
- Climate change, pollution, water quality (including Lough Neagh), nature, waste and environmental governance. Subtopics: Climate change and net zero, Water quality and Lough Neagh, Nature and biodiversity, Waste and pollution, Environmental governance.
- Agriculture and rural affairs
- Farming, food, fisheries, animal health, rural communities and rural services. Subtopics: Farming and farm support, Animal health and welfare, Fisheries, Rural communities.
- Infrastructure and transport
- Roads, public transport, planning, water and sewerage infrastructure, broadband and major capital projects. Subtopics: Roads, Public transport, Planning, Major projects, Water and sewerage infrastructure.
- Social security and welfare
- Benefits, poverty, food insecurity, welfare mitigations, pensions and child poverty. Subtopics: Benefits and mitigations, Poverty and food insecurity, Pensions and older people.
- Disability and equality
- Disability, equality and human rights, women’s rights, LGBTQ+ rights, race equality, the Irish language and Ulster-Scots as equality issues, and accessibility. Subtopics: Disability and accessibility, Women and gender equality, LGBTQ+ rights, Race equality and racism, Language and cultural rights, Human rights.
- Community relations and legacy
- Legacy of the Troubles, victims and survivors, inquests, flags, parades, bonfires, sectarianism and reconciliation. Subtopics: Legacy and victims, Sectarianism and hate crime, Flags, parades and bonfires, Reconciliation and good relations.
- Constitutional affairs
- The constitutional status of Northern Ireland, Irish unity, the Union, Brexit, the Windsor Framework, the Good Friday Agreement and the operation of the institutions. Subtopics: Union and Irish unity, Brexit and the Windsor Framework, Stormont institutions, Elections and democracy.
- Immigration
- Immigration and asylum policy, refugees, migrant workers and the Common Travel Area. Subtopics: Asylum and refugees, Immigration policy and borders.
- Local government
- Councils, council services, local rates, local facilities and council decisions. Subtopics: Council services and facilities, Council decisions and governance.
- International affairs
- Foreign policy, conflicts and humanitarian crises abroad, the EU, the United States and international relations. Subtopics: International conflict and humanitarian crises, International relations and the EU.
- Other
- Party organisation, tributes, recognitions and subjects not covered by another topic. Subtopics: Party organisation, Tributes and recognition, Sport, arts and culture, Other subjects.
Duplicates and changes
One release counts once for the party that published it. Duplicates caused by redirects, website moves, repeated feed entries or republication are merged using the canonical address, every address the release has been seen at, a fingerprint of its normalised text, and its title and date. Releases are never merged across parties (an identical joint statement from two parties is two records), and two releases are not merged merely because they discuss the same subject or share some text. When a release’s text changes substantially, the new fingerprint and date of change are recorded, a fresh Internet Archive capture is requested and the release is reclassified.
Shared issues
When a release responds to one specific development (a particular announcement, report, decision or incident), the summarising model gives it a short neutral label. Existing issues with similar labels from around the same dates are checked first, and Jev confirms whether the release concerns the same specific development (probability ≥ 0.75); otherwise a new issue is created. Issues are built only from releases that exist. An issue page lists each party’s statements in date order; a party with no matching release is described as “no matching statement found”, qualified by how completely its website was checked.
Internet Archive copies
For every eligible release the site asks the Internet Archive’s Save Page Now service to capture the original page. A capture is shown only after the Archive confirms it and reports its timestamp; addresses are never constructed from guessed dates. Captures taken within seven days of publication are labelled as such; later (retrospective) captures are labelled as showing the page as it was when captured, which may differ from the release as first published. If a party removes a release, its metadata and archive link remain.
How search works
The search box combines two methods, and every results page says which was used. Word search matches the words you type in release titles, short descriptions, labels and the text of the release. Meaning search compares meaning: when a release is collected, its text is divided into overlapping passages of about 180 words and each passage is turned into a list of numbers (an embedding, using the multilingual bge-m3 model on Cloudflare Workers AI). Your query is turned into numbers the same way and compared with them, so a search for “A&E pressures” can find a release about emergency department waiting times. By default short searches use both, ranked together (reciprocal rank fusion); you can switch to words only or meaning only. A pasted passage of 25 words or more is matched by meaning. Each result says whether it matched your words, a similar meaning, or both, and shows a short excerpt of the matching passage.
The embeddings are stored in a Cloudflare Vectorize index with only the party, publication date and main topic attached. They are kept only for releases that are publicly listed and are deleted when a release is merged, excluded or withdrawn from the record.
Pasted passages (find similar statements) are sent by form submission rather than in the page address, are used only to run the search, and are not stored, logged or cached; the AI Gateway is configured not to keep request contents. Similarity labels (“very similar”, “similar”, “related”) describe closeness of meaning, not copying.
What the statistics measure
Every count is a count of releases in this record matching the filters shown, and links to the releases it counts. A count measures publishing activity on the party’s official website. It does not measure political activity, effectiveness, media coverage, Assembly work or social media output. Parties publish at very different rates, so comparisons are shown as shares of each party’s output as well as absolute numbers. Topic shares on the topic coverage matrix can add up to more than 100% because a release can cover several topics. Calendar groupings use Northern Ireland dates (Europe/London) and ISO weeks (Monday to Sunday).
Source completeness
Coverage is tracked for every source and month as: checked with releases found; checked with no releases found; partly recovered; could not be checked; or not yet checked. A month is “checked” only when a complete listing was read successfully and every page in it has been processed. A month that could not be checked is never reported as a month without releases, and topic gaps are only reported where at least 90% of months in the period were checked.
What is stored
For each release the site keeps its title, addresses, dates, a short machine-written description, classifications, archive links, and the plain text of the release as extracted from the page (not the page itself). The text is used to search the full release and to show short excerpts of matching passages; the site never republishes a release in full, and always links to the original and to the Internet Archive copy. Text is kept only for releases in the public record (and those awaiting review), and is deleted if a release is merged with a duplicate, excluded or found not to be a release. Release text is not written to logs, and the AI Gateway is configured not to keep request contents.
Meaning-based search also stores numerical embeddings of each release’s passages in a Cloudflare Vectorize index, with only the party, date and main topic attached.
Limitations
- Parties publish on social media, in the Assembly and through the press as well as on their websites. Only website releases are covered.
- Historical coverage depends on what each website still lists and what the Internet Archive captured. Aontú’s and People Before Profit’s earlier websites are only partly recoverable.
- Several party websites block automated requests; their content is read from Internet Archive copies, which can lag behind publication.
- AI classifications are probabilistic and can be wrong, especially for short or ambiguous releases. Low-confidence results are marked.
- Northern Ireland relevance for all-island parties is a judgement; uncertain cases are excluded from totals until reviewed.
Reporting errors
If a release is misclassified, wrongly included or excluded, wrongly dated, or missing, or a source is broken, email adam@dynumo.co.uk with the address of the page. Corrections made by a person are recorded in an audit log and are kept when releases are reclassified.
Versions
Current rubric: 2026.11-s1+2026.11-a1 (NI relevance 2026.11-s1, analysis 2026.11-a1, issues 2026.11-i1, descriptions 2026.11-d2). Changing any question requires a new version. Releases keep the classification they were given; the version used is recorded on each one. A release is classified again only if its text changes substantially or an administrator reprocesses it.
- 2026.11-s1+2026.11-a1 (8 November 2026): First published rubric: Northern Ireland relevance (with a second, context-rich assessment for uncertain cases), 17 policy topics with subtopics, nine communication purposes, geographic scope, proposals, proactivity, criticism and tone.
- descriptions 2026.11-d2 (8 November 2026): Descriptions now name the party or the person and role, say specifically what was said or called for, and are written by a larger model from the original release text. Descriptions written under the first instructions are rewritten automatically from the stored text; classifications are unchanged.