# Royal and cybersecurity job titles in newsroom staff records (rows collected 2026-07-22 to 2026-09-15)

Dataset behind the report "Britain has 19 royal journalists on file and 2
cybersecurity reporters".

Counted from the JournalistLabs published base: 127,602 editorial rows, the rows of
`data/journalists.csv.gz` with `platform_domain == 0` and `media_typed == 1`, out of
173,133 classified editorial rows. 12,094 of the 127,602 carry `country_code == GB`;
that is the person's own country, not the outlet's. The rows carry a `fetched_at` stamp
between 2026-07-22 and 2026-09-15: 45,211 of the base were fetched in July 2026, 82,383
in August and 8 in September; of the 12,094 UK rows, 2,801 in July and 9,293 in August.

Rebuild with `python3 tools/report_royal_vs_cyber.py` (no network call) and
`python3 tools/report_royal_vs_cyber.py --sanity` for the public lists. Outlet names,
countries, types and the set of 50 largest newsrooms come from `tools/export.py`,
imported rather than reimplemented, so they match the site's `/outlets/` pages.

## Which lexicon is whose

The royal regexes, the narrow cybersecurity regex, the widened security lexicon, the
privacy subset, the excluded `national security` regex, the title-noun regexes and the
royal hand-removal list are this report's own, written for it. The sports, politics,
health, technology, AI, crypto and cybersecurity beat regexes are the site classifier's
own, imported from `data/classify.py` rather than retyped, so they match the site's
`/beats/` and `/journalists/` pages. `lexicon.txt` says which is which for every regex
and `beat_title_counts.csv` carries the same in its `regex_source` column.

## The BBC's newsroom size

Where this dataset's write-up says the BBC employs about 5,500 journalists, the source is
the BBC News article on Wikipedia, infobox field "Number of employees": "7,000 (5,500
journalists)", the same figure the body gives as "over 5,500 journalists working across
its output". Fetched 2026-09-16 through the Webshare gateway from
<https://en.wikipedia.org/wiki/BBC_News>; the revision read is
<https://en.wikipedia.org/w/index.php?title=BBC_News&oldid=1373835035>. It is Wikipedia's
figure, not a measurement of ours.

Every count here is over the job title. The `headline` field is a free-text profile bio
and is never published; the headline-inclusive counts are printed beside the title-only
counts in `facts_console.txt` and marked `matched_in = headline` in the two UK CSVs, so
the size of that difference is visible.

## Files

`uk_royal_titles.csv`
: Every UK row the royal regex reaches, on either field. `matched_in` is `title` for the
  19 rows whose own job title names the royals and `headline` for the 24 more the
  profile bio reaches. `kept_or_removed` is the hand-read verdict and `reason` says why a
  row was removed (Royal Air Force, Royal Opera House, Royal Caribbean, the Royal
  Society, the Royal Courts of Justice and the rest). No UK row was removed on the title
  rule; 15 of the 24 headline rows were. `matches_whole_word_royal` says whether the row
  also matches the narrower `\broyal\b`, which is the rule the scout used and which
  gives 16 instead of 19. `title_noun` is the noun the title itself carries.

`uk_security_titles.csv`
: The same shape for the security lexicon over UK rows: 2 rows on the title rule, 6 more
  reached only through the headline. `words_matched` names which lexicon word matched,
  and `narrow_cybersecurity` says whether the match was the word cybersecurity itself.

`uk_top_outlets_royal_cyber_tech.csv`
: Table A. The 25 largest outlets by UK-located rows, whatever country the outlet itself
  is in. The ranking rule: canonical outlets ordered by the number of rows whose
  `country_code` is GB, with the same publishable filter the site's `/outlets/` pages
  use (parent-company domains, and outlets missing a name, a country or a type, are
  excluded). `rank_by_uk_rows` is that rank and `outlet_country` is the outlet's own
  country, so a US outlet with a large UK staff is visible as one. 5 of the 25 are
  outside the United Kingdom: Bloomberg, The New York Times, The Wall Street Journal
  (Dow Jones), CNN, Associated Press. `uk_rows` is the denominator of every count column
  on the row.

`uk_country_outlets_royal_cyber_tech.csv`
: Table B. The 20 largest UK-country outlets by UK-located rows: the same ranking with
  the outlet's own country restricted to GB. GB News is 19th here and 23rd in table A.
  The two tables are kept apart because mixing them mislabels US outlets as UK ones.

`world_cybersecurity_titles.csv`
: All 23 rows in the base, worldwide, whose job title contains cybersecurity, with the
  outlet, the classifier role and the person's country. 17 canonical outlets.

`top50_newsrooms_cyber.csv`
: The 50 largest newsrooms on file by editorial rows, ranked as the site's `/outlets/`
  table ranks them (parent-company domains, and outlets with no name, country or type,
  excluded), each with its cybersecurity-title count, its widened-security count, its
  royal-title count and its technology-title count. 43 of the 50 have no cybersecurity
  title.

`beat_title_counts.csv`
: Technology, AI, crypto, sports, health and politics title counts beside the royal,
  cybersecurity, widened-security and privacy counts, world and UK, as counts and per
  1,000 rows, with the denominator on every row, the regex that produced it and a
  `regex_source` column saying whether the regex is this report's own or the site
  classifier's. The row `cybersecurity (site classifier)` is the classifier's own beat
  regex run over the job title: 28 rows worldwide and 2 UK rows, beside
  `cybersecurity (this report)` at 23 and 2.

`cybersecurity_reconciliation.csv`
: The 5 titles the classifier's cybersecurity beat regex reaches that this report's
  narrow rule does not, which is the whole of the 28-against-23 difference. All 23 rows
  of the narrow rule are inside the classifier's 28.

`report_royal_vs_cyber.py`
: The script that wrote every file in this folder, copied here as it ran.

`wikipedia_royal_correspondents_members.txt`
: The 14 member article titles of the Wikipedia category Royal correspondents as fetched
  on 2026-09-16, saved so the sanity check is repeatable. Public Wikipedia article
  titles, not rows of this file.

`lexicon.txt`
: Every regex used in this dataset, including the beat lexicons copied from
  `data/classify.py`, the word kept out of the security lexicon and why, and the
  hand-removal list for the royal set with the reason for each entry.

`facts_console.txt`
: The full console output of the last run, including the public-list fetches, kept so
  every published number has a line.

The person-level base is not published. These CSVs are the checkable grain: a row is a
job title at an outlet, or an outlet, never a named person. No person name and no
headline text is in this dataset. A row carries the job title as
the field reads, the outlet, the classifier role and the country. Cells of 1 to 4 print
as the number rather than "<5" in the four tables whose point is a small named list
printed in full; the two ranked outlet tables print counts of any size because the unit
there is an outlet and a lexicon, not a person.

## Licence

CC BY 4.0. Cite as JournalistLabs, "Royal and cybersecurity job titles in newsroom staff
records", 2026-09-16, rows collected 2026-07-22 to 2026-09-15.
