Trust and integrity

For readers who want to check the numbers for themselves: where each one comes from, what it has been tested against, how often the underlying data is wrong (measured by hand on a random sample), and what we know is not yet right.

This release

Release
2026-10-02b
Built
2026-10-02 from code commit 3089af9
Data taken
2026-10-02T07:07:34Z from the production database, as a reduced copy (see "Extract" below)
Licence
CC BY 4.0

Every release is dated and never changed. A new release is built from a fresh copy of the data; the figures and downloads always say which release they come from.

The checks, and this release's results

Each check is a question the data must answer "nothing wrong" to. It passes when it finds no rows; when it fails, it returns the rows that are wrong and by how much. A known failure with an understood cause is declared, with its reason and a date by which it must be fixed; after that date it counts as a failure again.

CheckWhat it assertsResultRows failing
composition__notice_typescomposition: every notice has one of the known notice types (the twelve seen in the extract of 28 Sep 2026)PASS0
coverage__weekly_gazettecoverage: no gap of more than 10 days between consecutive national gazette issues (a missing week of the Gazette itself)DECLARED4
distribution__office_share_jumpdistribution: no office's share of a year's accounts jumps more than threefold and by more than 2 points over the year before (offices with 30 or more accounts that year; below that, shares are noise)PASS0
freshness__latest_issuefreshness: the latest issue is within 21 days of when the extract was takenPASS0
magnitude__notices_per_yearmagnitude: no complete year (48 or more weeks of national gazettes) holds under half the median complete year's estate noticesPASS0
reconciliation__notice_issue_existsreconciliation: every notice points at an issue the extract holdsPASS0
relational__account_after_first_noticerelational: an estate's account is never dated before its first notice to creditorsDECLARED50 or more (the full count is in the declaration)

Known issues and declared differences

CheckWhy it failsDeclaredTo be fixed by
coverage__weekly_gazetteThe archive is thin before June 2012 (33 issues that year) and three weeks are missing from it (May 2014, July 2015, January 2017); not yet checked against the Government Printing Works list.2026-09-282026-10-31
relational__account_after_first_notice2,604 of 425,812 linked estates (0.6%) have an account dated before their first notice to creditors (extract of 1 Oct 2026). At least 391 are two estates linked as one: a date of death after the account. The rest are not yet explained.2026-10-012026-11-30

Where each figure comes from

FigureWhere it appearsHow it is computedStatus
Estates advertised in the last five years with no account yet, by how long/analysis/backlog#open-estatesgazette/analysis/figures/open_stock.sqlsolid
Open estates at each Master's office, by the time since their notice to creditors/analysis/backlog#open-by-officegazette/analysis/figures/open_stock_by_office.sqlsolid
Estates with no account five years after their notice to creditors/analysis/backlog#open-longgazette/analysis/figures/open_long.sqlsolid
How many estates reach their account within six months, a year and two years/analysis/backlog#completiongazette/analysis/figures/completion_curves.sqlsolid
New estates and estates reaching their first account, nationally/analysis/flows#nationalgazette/analysis/figures/flows_national.sqlsolid
Account notices printed for each office in the twelve months to each month, later accounts included/analysis/flows#per-office-outgazette/analysis/figures/flows_per_office_out.sqlsolid
New estates by office in the twelve months to each month, from 2023/analysis/flows#per-office-ingazette/analysis/figures/flows_per_office_in.sqlsolid
Accounts published each quarter by each office, with Thohoyandou picked out/analysis/flows#by-quartergazette/analysis/figures/accounts_by_quarter.sqlsolid
Accounts published by each office against the same months a year earlier/analysis/flows#year-on-yeargazette/analysis/figures/accounts_year_on_year.sqlsolid
Time from notice to creditors to account, by office/analysis/offices#first-notice-to-accountgazette/analysis/figures/first_notice_to_account.sqlsolid
Median time at each step, year by year/analysis/journey#stepsgazette/analysis/figures/journey_steps.sqlsolid
From a death to the notice to creditors/analysis/journey#death-to-noticegazette/analysis/figures/journey_death_to_notice.sqlsolid
From the notice to creditors to the account/analysis/journey#notice-to-accountgazette/analysis/figures/journey_notice_to_account.sqlsolid
Each step, office by office/analysis/journey#by-officegazette/analysis/figures/journey_by_office.sqlsolid
field coverage/analysis/integrity#parse-qualitygazette/analysis/figures/field_coverage.sqlsolid
Who is named as executor on the notice to creditors/analysis/executors#named-on-noticecounts from a read sample, gazette/analysis/data/executor_sample_counts.csv (method)solid
Who lodges the estate's first account/analysis/executors#lodged-accountcounts from a read sample, gazette/analysis/data/executor_sample_counts.csv (method)solid

How completely each notice is read

The share of notices with each field read, by year and form. An account does not print the date of death, so it shows 0% there. The office shows 0% on a notice to creditors because there it is read from the place printed after the date of death, which this chart does not count; most notices to creditors print it since 2023. Recent years link fewer notices because their accounts are not published yet.

Source: GazetteSearch analysis. Release 2026-10-02b. · Download CSV

The measured error rate

240 notices drawn at random, 40 for each form in each of the Gazette's three layouts, each checked by hand against its printed page in October 2026. An error is a value stored wrong, missed, or stored where nothing is printed. A right value carrying stray characters is counted apart as minor. Intervals are 95%.

FieldCheckedErrorsError rate95% intervalMinor
Form (J193 or J187)24000.0%0.0% to 1.6%0
Estate number24010.4%0.1% to 2.3%19
Surname24010.4%0.1% to 2.3%0
Given names24010.4%0.1% to 2.3%40
ID number23720.8%0.2% to 3.0%0
Date of birth23831.3%0.4% to 3.6%0
Date of death12021.7%0.5% to 5.9%0
Master's office (accounts)11510.9%0.2% to 4.8%37
Executor23841.7%0.7% to 4.2%64
LayoutNoticesWith an errorShare95% interval
legacy 2012-2015801012.5%6.9% to 21.5%
numbered 2015-20208000.0%0.0% to 4.6%
current 2021-20268022.5%0.7% to 8.7%

The free-text layout of 2012 to July 2015 is read least well. The sample's notice ids and every verdict are in gazette/analysis/data/error_check.csv.

The pipeline, for data engineers

  1. Discovery and download. A daily job lists new issues on the Government Printing Works site and archive; each PDF is stored with its source URL, byte count, SHA-256 and download time (issue table).
  2. Text. Each PDF is converted to text page by page (pdftotext, layout mode), with page numbers kept so every notice can be traced to its page.
  3. Segmentation and parsing. gazette/scripts/worker_parse.py finds each notice's start by the form's numbered fields, then reads each field by the form's layout (several eras of layout since 2012, each with tests). Every issue is scored after parsing: if the share of notices with an office, ID number or date drops below a floor for that form, the parse is flagged for review (parse health).
  4. Canonicalisation. The printed Master's office is mapped to one of sixteen offices by tiered rules (gazette/app/master_offices.py): the office after the word "Master", else the last office named; magistrate towns only when no office is named.
  5. Pairing. Notices of one estate (the notice to creditors and its accounts) are linked by estate number and the deceased, into an estate page.
  6. Extract. gazette/analysis/extract.py copies a reduced projection of the notices to a separate database. It reads these personal columns: the deceased's identity number, date of birth, date of death and place of death, the spouse's name and identity number, and the executor's name and address. The date of death is copied as printed. The rest are read only to derive sex (from the identity number), birth year, age at death, whether a spouse is named, the Master's office named in the place of death, and the executor's kind and, where the executor is a firm, the firm's name (a private executor becomes "individual"); they are never copied. The printed office and the executor's agent are copied as free text, with any ID-shaped number or email dropped on the server. Every file is scanned before loading.
  7. Checks. gazette/analysis/checks/*.sql, seven categories, run against the extract; results and declarations go into the release.
  8. Release. gazette/analysis/release.py runs one SQL file per figure (gazette/analysis/figures/) and writes a dated, never-overwritten directory of CSVs and a manifest. The pages read the release; nothing queries a database when a page is viewed.
  9. Tests. A seeded-defect corpus (gazette/analysis/corpus.py) plants one fault per check category; each check must catch exactly its own. The whole suite runs on every change.

Reproducing a figure

Each figure's computation is a single SQL file, listed above. With the public Gazette issues and the steps above, anyone can rebuild the numbers; the aggregate data for each figure is downloadable under CC BY 4.0.

Who runs this, and corrections

The analysis is free and carries no advertising. GazetteSearch is run by Phase Transitions (Pty) Ltd, which also offers businesses a paid bulk-matching service. To report an error, write to the contact address in the footer; corrections are made to the next release and recorded on Method and limits.