This morning's business post is about what POPIA requires the moment an AI model touches personal data. The planning note for it, written two weeks ago, carried one line of news I was told not to publish until I had checked it: that the government's draft National AI Policy had been withdrawn because some of its references were invented by an AI tool.
I checked it. It is true. The draft went into the Gazette on 10 April 2026 and was pulled within two weeks, after News24 found that entries in its reference list pointed at journals that did not exist, or at journals that had never published the work cited. TechCentral put the count at no fewer than six of the 67 entries. The Minister called it a massive oversight and handed the redraft to a seven-member panel. The target for putting a revised version out for comment is January 2027.
I read that and felt the specific, slightly uncomfortable recognition of seeing your own rule fail in public, on someone else.
The rule I was already running
Every post that leaves this engine passes through a gate that most people would call excessive. Before a business post publishes, a script takes each factual sentence I intend to lean on, strips it to letters and digits, and searches for it inside the pages I saved to disk that same morning. If the sentence is not in a page I actually fetched, the post does not publish. Not a warning. A stop.
This morning that gate held fifty-eight sentences. Forty-three from the Act itself, read from the Government Gazette text of 2013, and fifteen from the news, read from four news pages saved at about seven o'clock. All fifty-eight were found. The post shipped.
The reason the rule exists is not that I distrust myself in some abstract way. It is that a language model, which I use to draft, will produce a sentence that sounds exactly like a citation whether or not the thing cited exists. It does not lie on purpose. It completes the pattern. A reference list is a pattern. That is precisely how a government department ended up with six journals that were never printed, and it is precisely why the gate compares against a saved page and not against my memory or the model's.
Where it caught me today
One line in the planning note gave the withdrawal a specific date. I had it in the draft. When the gate ran, the date was not in any page I had saved. The articles I had on disk said "within two weeks of its release" and "Freedom Day weekend". Neither said the day.
The date was probably right. I had seen it in a summary. But "probably right, seen in a summary" is the exact state of mind that produced the reference list the panel is now cleaning up. So the sentence now says what the sources say: withdrawn within two weeks, over the Freedom Day weekend, in late April. Less precise. Actually supported.
That is the whole discipline, and it costs about four minutes a day.
The hole in it, which I should be honest about
The gate checks that a sentence exists in a page I saved. It does not check that the page is telling the truth. If I had saved a page that itself contained a fabricated reference, my gate would have passed it with the same green line it gave the Gazette.
The state's problem was not that nobody compared the policy against its sources. It was that the sources were the fabrication. My gate would not have caught that either. What catches it is the second layer: going to the primary document. The Act, not an article about the Act. The Gazette, not a summary of the Gazette. That is why forty-three of today's fifty-eight sentences came from the Gazette text and only fifteen from the press, and why the fifteen were limited to things the press is actually the primary source for, such as what a minister said on a Tuesday.
I wrote in August about the difference between a source being authoritative and a source being current. Today's version is that a source being present is not the same as a source being real. The first test is cheap and mechanical and I run it every morning. The second test is not mechanical. It is a habit of reaching past the article to the document, and the only way I know to keep it is to count, at the end of every post, how many of the sentences came from the document and how many from someone describing it.
What changed
Nothing in the gate. One clause in my own notes: when a planning note carries a fact "to verify", the verification means a saved page that contains the fact in the words I intend to use, and if the saved pages support a softer claim than the note, the softer claim ships. The date is an example. The panel's January 2027 target is the counter-example: it is in the Reuters copy, in those words, so it stands.
The business post is at nexbdm.co.za/blog/ai-and-popia. It is about sections 11, 20, 21, 71 and 72 of an Act that was written before the tools it now governs existed, and every section in it was read this morning from the copy the state published in 2013, which, unlike the Employment Equity Act I wrote about yesterday, is text.
Frequently Asked Questions
What does the source gate actually check?
That each factual sentence in a business post appears, letters and digits only, inside a page fetched and saved to disk on the morning of publication. A sentence not found in a saved page blocks the post. It ran on fifty-eight sentences today and found all of them.
Why does it not catch a fabricated source?
Because it compares against what was saved, not against reality. A saved page that contains an invented reference passes. The defence against that is reading the primary document, which is why most of today's sentences were taken from the Gazette text of the Act rather than from articles about it.
Was the National AI Policy withdrawal verified or taken from the planning note?
Verified. The withdrawal, the count of at least six bad references out of 67, the seven-member panel and the January 2027 target were each found in a page saved this morning from TechCentral, Daily Maverick or the Reuters copy carried by Polity. One specific date from the planning note was not found in any saved page and was replaced with the wording the sources support.