AI for ESG & Sustainability Reporting
Proficient · M2 · lesson 2 of 24 · queued
Preview — browse every lesson free. Enroll to mark lessons complete, open partner links and save your progress. Login & enroll →
Catching Hallucinations in ESG Output
📖
now learning

Catching Hallucinations in ESG Output

15 min

The emission factor looked perfect. A clean number, 0.412 kilograms of CO2e per kilowatt-hour, sitting in the cell for the company's largest leased data centre, produced in seconds by an AI assistant that had been asked to fill the electricity row. It was plausible, it was precise, and it was wrong. The real grid factor for that country and that year was 0.231. The model had not looked it up; it had generated a number that sounded like an emission factor. Nobody on the team caught it during drafting. The assurer caught it eight weeks later, on a Tuesday, by pulling the source the file could not produce, and what had been a quiet line in a spreadsheet became a finding, a restatement of the Scope 2 total, and an awkward conversation with the controller. This lesson is about the disciplined cross-check that would have caught that factor at the door, before it ever reached the inventory, so the assurer finds nothing because you found it first.

What a Hallucination Actually Is in Disclosure

In data-science language a hallucination is an output that is fluent and confident but not grounded in any real source, a plausible fabrication the model produced because producing plausible text is what it does. In disclosure language the definition is sharper and the stakes are higher: a hallucination is an invented number or claim that enters your inventory or your narrative wearing the costume of a verified fact. It is not a typo and not an honest estimate. It is a figure with no provenance, generated by a system that cannot tell you where it came from because it came from nowhere. The danger is not that the model is wrong loudly. The danger is that it is wrong quietly and beautifully, in exactly the format your real data takes, so it slides into the file indistinguishable from a measured figure.

Three hallucination types end careers in this work, and you should be able to name them on sight. The first is the hallucinated emission factor: a plausible but invented number with no named, dated source behind it, like the 0.412 above. The second is fabricated activity data: a quantity of fuel, electricity, distance, or spend that the model supplied to complete a row where the real value was missing. The third is the invented qualitative claim: a target the company never set, a policy it never adopted, a certification it does not hold, generated to make a narrative datapoint read as complete. All three share one property that makes them lethal and one property that makes them catchable. They are lethal because they are fluent. They are catchable because they have no source, and a number without a source cannot survive a cross-check against a real one.

The Three-Way Cross-Check

The method at the centre of this lesson is a disciplined three-way cross-reference you run on any AI-produced figure before it reaches the inventory or the disclosure. The principle is simple: a real number agrees with the evidence in three independent directions, and a hallucination cannot. Each direction catches a different failure, and running all three is what turns catching a hallucination from luck into a process. You are not trusting your eye. You are forcing the number to reconcile against three things it would have to corrupt simultaneously to pass, and a fabrication corrupts at least one.

Cross-Check One: Against the Source Document

The first direction is the source document, the underlying evidence the figure claims to come from: the utility bill, the supplier response, the fuel invoice, the meter export, the policy PDF. You take the AI's number and you go to the document and you find it. Not a number like it, the number, in the cell or the line or the paragraph it is supposed to live in. For an activity figure, the bill says 412,000 kWh or it does not. For a qualitative claim, the policy says the company committed to a 2030 target or it does not. This is the most basic check and the one most often skipped under deadline, because it is tedious and the number looked fine. It is also the check that catches fabricated activity data dead, because a quantity the model invented to fill a gap will not be in the document, for the simple reason that the gap is why the model invented it.

Cross-Check Two: Against the Factor Database

The second direction is the factor database, the named, dated, authoritative source of emission factors your inventory relies on, such as a national grid dataset, the GHG Protocol's referenced factors, or a recognised lifecycle database. When the AI supplies or applies an emission factor, you do not accept the factor; you look it up in the database and confirm the value, the year, the geography, and the unit match. The 0.412 in the opening fails here instantly: it is not in the grid dataset for that country and year, because the dataset says 0.231. An emission factor is the multiplier that converts activity data into emissions, and because it is a multiplier, a wrong factor scales an entire category silently. This is the check that catches the hallucinated factor, and it catches it even when the activity data is perfect, because a correct quantity times a fabricated factor is still a fabricated result.

Cross-Check Three: Against the Prior Period

The third direction is the prior period, last year's figure for the same line, which is the cheapest fraud-and-error detector you own. You compare this year's AI-produced number to last year's verified number and you ask whether the movement is explainable. A data centre's electricity does not halve year over year without a known cause, a category does not triple without a story, a factor does not swing forty per cent without a database revision you can name. The prior period does not prove a number is right; a hallucination can land near last year by chance. But it catches the implausible jump, the order-of-magnitude error, the unit slip, the fabricated quantity that happens to be wildly off, and it does so in seconds with arithmetic anyone can run. It is the backstop that catches what the first two checks miss when the source and the factor both look superficially fine but the result is nonsense.

A real number agrees with the source, the factor database, and last year. A hallucination cannot agree with all three, because it agreed with none of them to begin with. The cross-check does not detect lies by intuition. It forces the number to reconcile, and a fabrication has nothing to reconcile against.

Building the Cross-Check Into the Workflow, Not the Heroics

A cross-check you run when you happen to feel suspicious is not a control; it is a mood. The whole value of the three-way method comes from running it on every AI-produced figure, by default, as an ordinary step, not a heroic act reserved for numbers that look off. Hallucinations are dangerous precisely because they do not look off. The 0.412 looked better than the real factor. So the discipline cannot depend on the figure raising your suspicion, because the convincing ones never will. It has to be a standing gate the number passes through whether or not it triggered any instinct.

In practice this means three things. First, the AI is instructed up front to attach its claimed source to every figure it produces, so the cross-check has somewhere to start: a factor arrives with its claimed database and year, an activity figure with its claimed document and location. A model that will not name a source for a number has told you something important, because a real figure has a source and a hallucination does not. Second, the cross-check is logged, not just performed: the file records that this factor was confirmed against the named dataset, this quantity was tied to the named bill, this movement was reconciled to last year. The log is what lets the assurer see the control operated, and it is what lets a colleague rerun it. Third, the gate sits before ingestion. A figure does not enter the inventory or the draft until it has cleared all three directions, because a hallucination that reaches the system has already done its damage and now has to be hunted down instead of stopped.

Why the Assurer Is the Reviewer You Are Pre-Empting

It helps to picture exactly who you are racing. The three-way cross-check is not an arbitrary set of checks; it is a reconstruction of what an external assurer does when they test a figure, performed by you, earlier, so they find nothing. An assurer under a limited assurance engagement, the most common level today, performs procedures sufficient to conclude that nothing has come to their attention suggesting the figures are materially misstated, and the way they look is by pulling a sample of numbers and tracing each one back to its source, its factor, and its prior-period context. That is the same three directions. Under reasonable assurance, the higher level the market is trending toward, they pull a larger sample and test harder, but the directions are identical. So when you run the cross-check yourself, you are not inventing busywork. You are doing the assurer's procedure first, on every figure instead of a sample, which is why the figure that clears your gate survives theirs.

A Worked Example: The Factor That Sailed and the Cross-Check That Stopped It

Return to the data centre and watch the two paths diverge from the same AI output. The carbon accountant is closing Scope 2 and needs the emissions for a leased data centre in a country where the electricity consumption is known from the landlord's submetering but the grid factor has to be applied. She asks the AI to calculate the emissions for the row.

Before, the hallucination sails through. The model returns a tidy result: 412,000 kWh times 0.412 kg CO2e/kWh gives roughly 170 tonnes CO2e. The activity figure is real, lifted correctly from the submetering export. The factor is invented. The model produced 0.412 because it is a plausible grid factor for somewhere, formatted exactly like a real one, and it offered no source because it had none. Under deadline the accountant glances at the row, sees a sensible-looking calculation with a real activity number, and accepts it. The 170 tonnes enters the Scope 2 total. Eight weeks later the assurer samples this row, asks for the factor's source, and the file cannot produce one that yields 0.412, because the actual grid dataset says 0.231. The result was inflated by roughly 78 per cent on a material line. Now it is a finding, a restatement, and a credibility cost, and the accountant is explaining after the fact why a number she published had no source.

After, the cross-check stops it at the door. The same AI returns the same 170 tonnes. This time the accountant runs the three directions before the figure enters anything. Source document: the 412,000 kWh ties exactly to the submetering export, so the activity data passes. Factor database: she looks up the grid factor for that country and year in the named dataset and finds 0.231, not 0.412. The factor fails. She does not patch the number; she rejects the AI's factor, applies the database value, and recomputes: 412,000 times 0.231 gives roughly 95 tonnes CO2e. Prior period: last year the same data centre was about 90 tonnes on similar consumption, so 95 reconciles and 170 would have screamed. The figure that enters the inventory is 95 tonnes, tied to a real activity source, a named dated factor, and a sensible year-over-year movement, with all three confirmations logged. When the assurer samples this row, the source is there, the factor is there, the movement explains itself, and they move on. Same model, same activity data, same five minutes of work redirected, and the difference is a clean engagement instead of a restatement.

That is the entire lesson in one comparison. The hallucination was not exotic; it was a normal, plausible, well-formatted number that the model could not source. The cross-check did not require a quant or a clever instinct. It required going to three places the number had to agree with, and the fabrication agreed with one of them, which was enough to catch it.

The Failure Patterns the Cross-Check Catches, and the One It Cannot

The three directions map cleanly onto the three hallucination types, which is why running all three matters rather than picking a favourite. The source-document check is the killer for fabricated activity data, because invented quantities are not in the documents. The factor-database check is the killer for hallucinated emission factors, because invented factors are not in the dataset. The prior-period check is the backstop that catches the gross error any of them produces, the order-of-magnitude slip, the unit confusion, the doubled or halved line. Together they form a net with no single hole that lets all three failure types through.

Be honest about the one thing the cross-check does not do, because overclaiming a control is its own risk. It does not validate a defensible estimate. A labelled, method-stated, uncertainty-bearing estimate for a genuinely unmeasurable category is not a hallucination; it is good practice, and it will not have a source document because no primary data exists, by design. The cross-check is not for distinguishing estimate from measurement; the labelling discipline does that. The cross-check is for distinguishing a real or properly estimated figure from a fabricated one masquerading as real. A figure that fails the source-document direction is either a fabrication or an estimate, and the answer to which is whether it is labelled as an estimate with a stated method. If it is labelled, it is an estimate and the estimate discipline governs it. If it is presented as measured and has no source, it is a hallucination, and it does not enter the file.

The Hallucination That Wears Words Instead of Numbers

So far the examples have been figures, because a fabricated number is the most concrete case, but the third hallucination type, the invented qualitative claim, deserves its own treatment because it slips past number-focused controls entirely. When an AI drafts a narrative datapoint, it can assert that the company holds a certification it does not hold, adopted a policy it never adopted, set a target it never set, or achieved an outcome that never happened, and none of these is a number a factor-database check would catch. The model produces them for the same reason it produces a fake factor: the narrative felt incomplete without them, and generating a plausible sentence about a certification does not require the certification to exist.

The cross-check still applies, but the directions specialise. The source-document direction is the one that bites: every qualitative claim must trace to a real record, the actual certificate, the board minute approving the policy, the target register, the evidenced outcome. A claim that cannot be traced to such a record is the qualitative equivalent of a factor with no database entry, and it is removed for exactly the same reason. The factor-database and prior-period directions have narrower roles here, applying to any figures embedded in the claim and to whether the asserted progress is consistent with last year. The principle is unchanged: a real claim has a source, a hallucinated one does not, and the cross-check forces the claim to produce its source or be struck. The reason this matters so much is that an invented target or certification in an assured filing is simultaneously a hallucination and a greenwashing exposure, so it fails on two fronts at once, and the source-document check is the gate that catches it before either front opens.

Who Runs the Check, and Where It Sits in the Cycle

A control only works if it is owned and placed, so be concrete about both. The cross-check is owned by whoever produces or first handles the AI output, not delegated to a final reviewer at the end, because by the end the figure has often already propagated into totals, drafts, and downstream calculations, and unwinding it is far harder than stopping it. The analyst who asks the AI for a factor runs the factor-database check on the answer before using it. The accountant who has the model fill an activity row runs the source-document check before the row enters the inventory. The disclosure lead who has AI draft a narrative runs the source check on every claim before it joins the draft. The check sits at the point of production, which is the only point where stopping a hallucination is cheap.

This placement has a second benefit beyond cost. A check run at the point of production by the person who produced the output is a check run by someone who still has the full context, the prompt they used, the data they fed in, the reason they expected a certain answer, all of which sharpen the check. A check run weeks later by a different reviewer has lost that context and is reduced to mechanical tracing, which still works but catches less. Owning the check where the output is born is therefore both cheaper and more effective, which is the rare combination that makes a control easy to sustain rather than a burden teams quietly abandon.

Key Takeaways

  • In disclosure, a hallucination is an invented number or claim that enters the inventory or narrative wearing the costume of a verified fact; it is lethal because it is fluent and formatted like real data, and catchable because it has no source.
  • Three hallucination types matter most: the hallucinated emission factor, fabricated activity data, and the invented qualitative claim such as a target the company never set.
  • The three-way cross-check reconciles any AI-produced figure against the source document, the factor database, and the prior period; a real number agrees with all three and a hallucination cannot, because it agreed with none.
  • The source-document check kills fabricated activity data, the factor-database check kills hallucinated factors, and the prior-period check is the cheapest backstop for gross errors and implausible jumps.
  • The cross-check is only a control if it runs on every AI figure by default, before ingestion, with the result logged, because the convincing hallucinations never look suspicious enough to trigger a discretionary check.
  • The method is a reconstruction of what the assurer does when they sample a figure; running it yourself first, on every number instead of a sample, is why the figure that clears your gate survives theirs under limited or reasonable assurance.
  • In the worked example, a real 412,000 kWh times a hallucinated 0.412 factor inflated a row by 78% to 170 tonnes; the factor-database check found the true 0.231, the prior period confirmed the corrected 95 tonnes, and the restatement never happened.
  • The cross-check distinguishes a real or properly estimated figure from a fabrication, not an estimate from a measurement; a labelled, method-stated estimate is good practice, and the labelling discipline, not the cross-check, governs it.