The number everyone quotes was spoken aloud on a call. The document filed that day contains neither the figure nor the cause.
On May 10, 2022, Unity Software told the public two versions of the same bad news.
The first version was filed. An 8-K went to the SEC that day carrying Exhibit 99.1, the quarterly results release. In its Outlook section, the exhibit lowered full-year 2022 revenue guidance to a range of $1,350 to $1,425 million, down from the $1,485 to $1,505 million filed on February 3, and it gave the reason in nine words: the company was "lowering guidance for the full year ending December 31, 2022 due to challenges with monetization products." That phrase is the entire causal story the filed document tells. I searched the full text of the exhibit, 34,284 characters of it, for "Pinpointer," "bad data," "fault," "ingest," and "Audience." Zero occurrences. The only hit on "audience" is the ordinary word, in a paragraph about a grant program.
The second version was spoken. On the earnings call the same day, as transcribed by The Motley Fool, CEO John Riccitiello described two specific problems. "The first was a fault in our platform that resulted in reduced accuracy for our Audience Pinpointer tool," he said, and then, separately: "we lost the value of a portion of our data, training data due in part to us ingesting bad data from a large customer." He also gave a number the filing does not contain: "We estimate the impact to our business of approximately $110 million in 2022 with no carryover impact to 2023."
Every article about this incident repeats the $110 million and the bad training data. Almost none of it mentions that if you go looking for either one in the document the company actually filed that day, you will not find them. The number lives in speech. The filing holds a phrase vague enough to cover almost any operational stumble, and a pair of revenue ranges you have to difference yourself.
This essay is about both halves of that: what the incident teaches people who run data pipelines for a living, and what the paper trail teaches anyone who reads corporate disclosures and thinks they have the story.
Start with a distinction the retellings routinely flatten. Riccitiello described two failures, not one. There was a platform fault that reduced the accuracy of Audience Pinpointer, Unity's ad-targeting tool. And there was, separately, the ingestion of bad data from a single large customer, which poisoned a portion of the training data behind the monetization models.
The collapsed version, "Unity's AI ate bad data and lost $110 million," is tidier and partly wrong. The $110 million estimate was the CEO's figure for the combined impact on the business. Which problem contributed how much is not something the public record answers, and this essay will not pretend it does. What makes the incident worth studying is the second problem's shape, because the first, a software fault, is a story engineering already knows how to tell. The second is the newer one: a production system that kept working exactly as written while its statistical core quietly degraded, because the thing that broke was not code.
The spoken number can be checked against the filed ranges, and it holds up. This essay ships a small script, named in the footer, that fetches both exhibits from EDGAR, verifies the guidance strings still read as transcribed, and does the subtraction.
The February guidance midpoint is $1,495 million. The May midpoint is $1,387.5 million. Midpoint to midpoint, the cut is $107.5 million, which sits about as close to "approximately $110 million" as round corporate speech ever sits to arithmetic. That is worth saying plainly: the spoken figure is consistent with the filed ranges. This is not a story about a company whose numbers do not add up.
But notice what the filed document, by itself, licenses. Low end to low end, the cut is $135 million. High end to high end, it is $80 million. Take the widest defensible reading and you get $155 million; the narrowest, $60 million. A reader with only the filings can honestly derive anything in a band from $60 to $155 million. The precise-sounding number everyone knows, $110 million, exists because an executive said it out loud, once, on a call. The written record and the traveled fact are different objects, and in this case the traveled fact is the better one, more specific, more causal, more useful. It just happens to live in the less durable, less findable, less legally load-bearing medium.
While preparing this piece, the reproduction script itself briefly demonstrated the hazard. Its first draft carried a header comment asserting that the famous $110 million was a derived number, manufactured by journalists differencing the two guidance ranges. It was a tidy theory, and it survived exactly until the transcript was fetched. Riccitiello said the number himself. The corrected comment stays in the shipped script rather than being quietly deleted, because a reproduction artifact whose header lies is worse than no artifact, and because constructing a confident story one source short of the truth is precisely the failure this essay is about.
Here is the passage that should be pinned above every data-ingestion service, from the call's question-and-answer session. Asked about recovery, Ingrid Lestiyo, who ran the monetization business, laid out the sequence: "The recovery will go through several steps. The first is data rebuilding. The second is model training and this is an iterative process. And as we train the model more the performance will improve."
Riccitiello's prepared remarks gave the same sequence: "data rebuilding, model training and improvement and then revenue recovery as our customers scale up further on Unity monetization."
Read those with an operator's eye and notice the words that are missing. Nobody says revert. Nobody says roll back. Nobody says restore from the known-good snapshot, redeploy last Tuesday's build, flip the flag off. For code, two decades of engineering practice have made the bad deploy a bounded event: detect, revert, write the postmortem. For a trained model fed by a live data pipeline, the damaged artifact is not the code. The code that ingested the bad data presumably worked exactly as written. The damaged artifact is the statistical object the system learned, and the recovery path for that object is the one Unity's executives described under no obligation to be interesting: rebuild the inputs, retrain the models, iterate, and then wait for customer behavior to respond.
That waiting is why the blast radius is measured in quarters. Unity forecast the damage across the remainder of 2022, with, in Riccitiello's words, "no carryover impact to 2023." The company was projecting a bounded recovery, and to its credit the bound had a rationale attached rather than bravado. But the bound was measured in quarters. Compare the famous Knight Capital incident, the subject of an earlier essay in this series: deterministic code executing wrongly cost $440 million in 45 minutes, a catastrophe with an instant, legible cause and an instant end. Unity's incident is the inverted case. Nothing exploded. A statistical asset depreciated, continuously, while dashboards presumably stayed green, and the fix was not an action but a season.
The most transferable sentence in the whole record is the causal one: bad data, from one large customer, entered the training pipeline.
Think about how asymmetrically the industry treats its write paths. A pull request that changes one line of application code passes review, tests, CI, staging, and a deploy gate. A customer data feed that writes directly into the substrate your revenue models are trained on frequently passes a schema check. Not because anyone decided the model was less important than the code, but because the ingestion path grew up as plumbing, and plumbing gets monitoring for flow, not for meaning.
The operator checklist that falls out of Unity's recovery sequence is short and concrete:
The disclosure half of the story deserves a careful landing, because the cynical reading is wrong. Unity concealed nothing. The 8-K and the earnings call happened the same day, both are public, and securities practice has always treated the call as part of the disclosure picture. The company's spoken estimate was consistent with its filed ranges, which is more than can be said for plenty of cheerful earnings calls.
The finding is quieter and more useful than a concealment story. It is about where facts live and which copy of a fact travels. The version of this incident that entered the world's memory, $110 million, bad training data from a large customer, exists in a transcript of speech, rendered by a third party. The version with legal weight, filed the same day, says "challenges with monetization products" and offers two ranges from which a diligent reader could derive a loss anywhere between $60 and $155 million. If you reconstruct events from filings, you will know that something happened and roughly how big it was. The cause, the mechanism, and the number itself all live one medium over, in the recording of what an executive chose to say out loud.
For anyone who reads disclosures professionally, the habit that follows is to treat the filing and the call as two halves of one document, and to notice which facts appear in just one of them. And for anyone who builds the systems, the habit is the mirror image: assume that when your model quietly loses its edge to a bad feed, the world will eventually learn a number and a phrase. The number will be approximate, spoken, and repeated forever. The phrase, the one with your name legally attached, will say something like "challenges with monetization products." Neither will help the next team avoid the same quarter you just had. The postmortem that would is the one only you can write, and it starts at the ingestion gate, where a single customer's data is, right now, one schema check away from your training set.
Sources: Unity Software Inc. Form 8-K filed 2022-05-10, accession 0001810806-22-000017, Exhibit 99.1 (guidance table and its opening sentence, section "Outlook": FY2022 range $1,350–$1,425M, growth 22%–28%, "challenges with monetization products"; Q1 revenue $320.1M "at top of guidance," headline paragraph; Q2 guidance $290–$295M, Outlook table), via SEC EDGAR, fetched 2026-08-20; Unity Software Inc. Form 8-K filed 2022-02-03, accession 0001810806-22-000002, Exhibit 99.1 (FY2022 guidance $1,485–$1,505M, growth 34%–36%, section "Outlook," guidance table), via SEC EDGAR, fetched 2026-08-20; Unity Software Inc. Q1 2022 earnings call, 2022-05-10, quotations as transcribed by The Motley Fool, published 2022-05-11 (Riccitiello prepared remarks on the platform fault, the ingested bad data, the ~$110M estimate, and the recovery sequence; Lestiyo in Q&A on data rebuilding and iterative retraining). A transcript is a secondary rendering of primary speech, and these quotations are cited to the transcript, not to the 8-K, because they do not appear in the 8-K; absence-of-terms finding (zero occurrences of "Pinpointer," "bad data," "fault," "ingest," "Audience" as a proper noun) verified against the full extracted text of the 2022-05-10 exhibit. Reproduction script: repro_unity_guidance_delta.py, published alongside this essay, prints every guidance figure, midpoint, and band reading used above; run with --fetch to re-verify both guidance strings against EDGAR before computing. The one-day stock move is deliberately not cited (secondary, unverified at a market-data primary); the "large customer" is not named because no primary names it; the platform fault and the data ingestion are kept distinct throughout because the CEO described them as two problems.
The pipeline kept running. That was the problem.
Nothing in Unity’s system threw an error. Data arrived, jobs succeeded, models retrained, and the statistical core degraded anyway, because the thing that broke was not code. A pipeline that records only whether a step ran cannot answer the question that matters afterwards: which upstream input reached which model, and when. Chain of Consciousness is that record for AI agents and the pipelines around them, tamper-evident and written as the work happens rather than reconstructed once somebody asks. It does not stop bad data arriving. It makes the path it took checkable, so the answer to “which customer’s feed, and which retrain” is a lookup instead of an investigation.
Hosted Chain of Consciousness · Verify a record
pip install chain-of-consciousness · npm install chain-of-consciousness