The most dangerous answer is the one that used to be true: What we learned building AI for sustainability reporting: the hard part was never generating an answer. It was teaching the system when a previously approved answer must not be reused.
In short: Reusing last year's approved sustainability disclosures only works if the software knows when reuse is invalid. Glacier's Company Knowledge Profile stores every approved answer with its identity: question, entity, reporting period, boundary, evidence and approver. Deterministic rules check that identity before an AI model may draft from it, and record every refusal.
Every spring, at thousands of companies across Europe, someone signs off on a sentence like this one:
Gross Scope 1 greenhouse gas emissions were 41,300 tCO2e, calculated under the operational-control boundary. Refrigerant losses are included from 2024 onward.
By the time it is approved, that sentence has been drafted from evidence, argued over, checked against the rulebook and signed by someone whose name carries weight. It is the most valuable thing the reporting software produced all year. Not because of the number, but because of the judgement wrapped around it: this figure, for this company, this year, on this basis. Then the software changes a status from "in review" to "approved" and keeps nothing else.
Twelve months later the same question comes back. The new reporting project opens on a blank page, and the team starts reading the company's documents from scratch, as if nobody had ever answered it.
We build Glacier, an AI platform for sustainability reporting under Europe's CSRD rules, where a single reporting cycle means answering on the order of a thousand structured questions. At some point we admitted something uncomfortable: the strongest signal our product ever generated, a human approving an answer under specific conditions, was being thrown away the moment it appeared. So we built the Company Knowledge Profile, or CKP: a durable memory of what a company has said, who stood behind it, and the conditions under which it was true. Building the memory turned out to be the easy part. The hard part was teaching it when it must not answer.
Semantic search is not memory
The obvious way to remember prior work is semantic search. Index last year's approved answers, retrieve whatever resembles this year's question, let a language model draft from it. It works beautifully in a demo.
It also fails in a particularly quiet way. To a similarity engine, Scope 1 emissions in 2025 and Scope 1 emissions in 2024 are nearly the same thing. So are a policy and the policy that replaced it. So are two figures calculated under different organisational boundaries, sitting in almost identical sentences.
The failure we worry about is never an absurd invention that anyone would catch. It is a real number from the wrong year. A valid answer for the wrong subsidiary. An approved statement made under rules that have since changed. It reads perfectly, because it was once perfect.
And no amount of model quality fixes it. A better language model cannot recover context the surrounding system never kept. The context has to become part of the knowledge itself.
An answer is a claim, not a paragraph
Every approved answer in the Company Knowledge Profile is stored as a claim with an identity, not as a paragraph of text. CKP keeps the approved wording, because the caveats and qualifications are part of what made it right. But it never keeps the wording alone. Every answer is stored with its identity (which question it answers, for whom, for which period, and on what basis) along with the evidence it rested on and the person who approved it.
That changes the question the software gets to ask. Not "does this old answer look relevant?" but "is this claim valid, here, now?", a question with a mechanical answer.
Suppose the company moves from an operational-control boundary to financial control. Last year's figure stays in CKP. It is part of the company's history and helps a person understand the change. But it can no longer silently ground a new draft. The identity doesn't match, and the system knows it.
The same discipline applies as knowledge evolves. When a later approval corrects an earlier one, or a standard is revised, CKP doesn't rewrite history to keep things tidy. It keeps the old position, the new one, and the relationship between them. There are two questions a reporting team eventually needs answered, and they are different questions: what do we stand behind today, and what did we believe on the day we filed? CKP can answer either. On the product side this is what we call the evidence trail: every piece of information carries a source, a status and an approval.
The model writes. It doesn't get a vote.
This is the division of labour the whole system is built on. Deterministic rules decide what the model is allowed to write from, and the rules are strict about identity: an answer from the wrong year is refused, not paraphrased, and an answer whose evidence has been withdrawn loses its standing with it.
By the time our language model sees any material, the platform has already found it, checked its identity and cleared it for use. The model does what it is genuinely good at: interpreting a question, bringing cleared material together, expressing it well. It is never asked to certify its own evidence.
Fluency is not permission.
Refusal is a feature
Most AI systems are optimised to return something. In sustainability reporting, that instinct turns uncertainty into false authority, so CKP treats refusal as a first-class, recorded outcome.
If two approved claims conflict, it shows the conflict rather than picking the one with the better similarity score. If a disclosure code could belong to two standards (and reporting frameworks reuse codes more than anyone would like) it parks the answer for a human instead of guessing. If no approved claim covers an applicable requirement, it shows a gap, plainly, instead of papering over it.

The moment that makes the system different: reuse is a decision, and refusal is one of its recorded outcomes.
Every one of those refusals creates work for somebody. That is deliberate. In assurance-sensitive work, a missing answer is recoverable: someone reviews the queue and resolves it. A wrong answer travels. Through a draft, past a reviewer, into a filed report, where it stops being a bug and becomes a finding. Given the choice, we will take the recoverable failure every time.
There is a commercial version of this argument, too. "Our AI reuses your previous answers" is a claim any vendor can make. "Our system can tell you, in writing, why it refused to reuse one" is not, and it is the claim an auditor actually cares about.
"So it's a knowledge graph?"
Technical readers usually ask at this point why we didn't just use a knowledge graph. The honest answer: it is one, in every way that matters. But graph-or-not was never the interesting question. Most knowledge graphs are built to know as much as possible: ingest everything, link aggressively, attach a confidence score, accept that some edges will be wrong. That is a fine trade when a wrong edge is noise. In our world a wrong edge is a misstatement with a paper trail.
So CKP inverts the usual priorities. Provenance isn't an annotation added after the fact; it is part of the assertion itself. Ambiguity doesn't become a decimal score; it becomes a task on someone's list. And absence means something: because CKP knows the full set of questions a standard asks, it can tell the difference between answered, deliberately not reported, and genuinely missing. That is exactly the map a reporting lead needs in January, and a general-purpose graph cannot draw it.
Most graphs are built to know as much as possible. CKP is built to know exactly how much it knows.
A company shouldn't have to forget itself every year
Here is what this feels like from the other side, in the second year of using Glacier. Drafts arrive already consistent with what you signed off last year. A contradiction between this year's draft and last year's filed figure is caught before any human reads it. When someone asks "why does this disclosure say 41,300?", the answer (which question, which period, which evidence, whose approval) no longer depends on anybody's memory. If two teams have approved different answers to the same question, that surfaces as a conflict to resolve, not a surprise in an audit.
The same approved claim also stops being single-use. A figure cleared for the CSRD report is the same figure an EcoVadis questionnaire asks for, and the same figure an ESG rating wants in yet another shape. Only the form of the question changes. That is the part of the Company Knowledge Profile customers notice first: approved once, usable everywhere.
We are careful with the phrase "audit-grade AI", because that judgement belongs to auditors, not to software vendors. Our claim is narrower and, we think, more useful: every piece of knowledge offered to our AI has an identity, a history and a reason it is eligible to be there. And when those things cannot be established, the system says so.
The goal was never an AI that always has an answer. It is a company memory that knows who said what, when it was true, and when to keep quiet.
See it on your own report
We take an existing sustainability report and show what becomes a reusable, approved answer, and what our system refuses to reuse.
Talk through the Company Knowledge Profile
Or read how the Company Knowledge Profile works end to end, from reading in your existing documents to approval levels and the evidence trail.
Frequently asked questions
Can AI reuse last year's sustainability reporting answers? Yes, but only under conditions. Reuse is safe when the new question shares the same identity as the approved answer: same reporting period, same entity and scope, same basis, and evidence that is still valid. Glacier checks those conditions with deterministic rules before any AI model drafts from a prior answer.
Why does semantic search fail for CSRD and ESG reporting? Semantic search ranks by similarity, and in reporting the dangerous candidates are the most similar ones. Scope 1 for 2024 and Scope 1 for 2025 look almost identical to a similarity engine, as do a policy and its replacement. The result reads perfectly while being wrong for the current period.
What is an evidence trail in sustainability reporting? An evidence trail records where a disclosed figure or statement came from: the source document, the status of that source, who approved the statement and when. It lets a reporting team answer "why does this disclosure say what it says" without relying on anyone's memory, and it survives staff changes between reporting cycles.
What happens when a company changes its reporting boundary? The prior figure stays in the Company Knowledge Profile as part of the company's history, but it can no longer silently ground a new draft. A move from operational control to financial control changes the basis of the claim, so the identity no longer matches and the answer is not reused automatically.
Is Glacier's AI audit-proof? That judgement belongs to auditors, not to software vendors, so we do not claim it. What Glacier does claim is narrower: every piece of knowledge offered to the AI carries an identity, a history and a documented reason it is eligible. Where those cannot be established, the system refuses and records the refusal.




