GLASS BOXExplainable AI
Ontology AI
Power Consultancy logo Power Consultancy
Section 01 – Black Box AI to Glass Box XAI Black Box AI to Glass Box XAI

Structured Intelligence for Agentic Reasoning

From Ontology-Derived Knowledge Graphs to Graph RAG Powered Neuro-Symbolic AI

Today's AI systems give answers without accountability. When a black box model tells an executive that a project will slip three weeks, there is no way to ask why, no way to trace the claim back to the underlying records, and no way to know whether the answer came from real data or from a plausible sounding guess. For an institution like a Bank, where decisions carry regulatory, financial, and reputational weight, that opacity is not a minor inconvenience, it is a structural risk. Glass Box exists to prove there is another way. Every answer it produces is computed from a live digital twin of real project data, and every figure can be clicked through to the raw evidence rows and the audit trail that produced it. The system attributes causes rather than asserting them, simulates scenarios without ever touching the underlying record, and, critically, refuses to answer when the data cannot support an answer, instead of inventing one. The goal is not to make AI sound more confident. It is to make AI accountable: transparent in its reasoning, grounded in its evidence, and honest about its limits.

Section 02 – The problem
Agentic AI

A confident answer you can't trace is a liability

Every reporting tool you've been shown answers fluently. Dashboards summarize, copilots narrate, and when the number is wrong there is no way to know whether it was computed or invented. The moment an auditor, a regulator, or the board asks how a decision was made, fluency is worth nothing. Lineage is everything.

This is not a small gap to close with a better prompt or a stricter review step. It is a structural property of how most of these systems are built. A language model, asked "why is this late," will produce an answer whether or not it actually has access to the events that caused the delay. It cannot tell you which case you are in, because from the inside, a fabricated answer and a grounded one look identical. The fix has to be architectural, not procedural.

What a language model computes

p(x) = ∏ p(xₚ | x₁…xₚ₋₁)

A large language model is an autoregressive probability distribution. That single line explains both its power and its ceiling. It is a model of how language continues, trained to maximise the likelihood of plausible text, not the truth of asserted facts.

What your business requires

state(entity, t) → verified_fact

There is no variable inside a transformer that represents "whether this approval was granted" or "who is double-booked this week." When you deploy an LLM as a decision engine, you are asking a model of linguistic plausibility to do the job of a model of the world. The eloquence is real. The world model is not.

Section 03 – How this is different
Architecture

Four commitments, not features

01
Computed, not generated.

Answers come from deterministic engines running over real, dated events. The language model never decides, it only narrates a result the math has already produced. Ask the same question of the same data twice; you get the same answer, twice.

Watch this happen under Deep Analysis, in the menu above.

Compare A pure LLM pipeline computes nothing, it predicts the most likely next token given the prompt and whatever context was retrieved. Two runs of the same question can silently diverge. That is acceptable for a chatbot. It is not acceptable for a number that goes in front of a board.
02
Refuses rather than guesses.

If no verb exists to answer a question, the system says so and stops. No verb, no evidence, no guess. An honest refusal is what makes every answer it does give worth trusting.

Try an unanswerable question yourself under Deep Analysis, in the menu above.

Compare An agent built on an LLM will almost always attempt an answer, because refusing is not its default behavior, producing plausible text is. Getting an agent to reliably say "I cannot compute this" instead of quietly approximating it is an open, unsolved problem, not a settings toggle.
03
Every number opens.

Any figure in any answer resolves, in one click, to the raw event row behind it, stamped with both clocks: valid_time, when it became true in the world, and tx_time, when the system learned it.

The evidence rail is one click away from any figure, under Deep Analysis.

Compare A citation returned by a retrieval step tells you which document was consulted. It does not tell you whether the number in the answer actually came from that document, or was quietly rounded, merged, or invented alongside it. Evidence and citation are not the same guarantee.
04
Bounded by a frozen ontology, not an open-ended model.

The system only recognizes entities and relationships that have been explicitly defined and validated ahead of time: milestones, approvals, people, dependencies, and a fixed set of ways they can relate. A language model can talk about anything. This system can only reason about what has actually been formally described to it. That constraint is the entire reason it can be audited at all.

The full ontology and its validation rules are under Architecture, in the menu above.

Compare A general-purpose agent has no such boundary. It can be asked about anything, and it will try to answer about anything, using whatever it can retrieve or infer. Unbounded scope and auditability are in direct tension. This system deliberately gives up the former to keep the latter.
Section 04 – The mathematics of why wrappers fail
Exponential decay of compounding error

Agency multiplies error. Scale cannot repeal the exponent

A chatbot makes one probabilistic call per answer. An agent makes a chain of them: parse the goal, plan the steps, call the tools, interpret the results, act again. If each step succeeds independently with probability p, the probability the whole chain succeeds is pn. This is the single most important formula in agentic AI, and almost nobody selling agents will put it on a slide.

Reliability calculator
36%
end-to-end success probability
At 95% per step over 20 steps, the workflow succeeds barely one-third of the time. Prompts cannot fix this: it is exponential decay.
Reference exhibit: published reliability table
Per-step reliability Steps in workflow End-to-end success
95% 10 ≈ 60%
95% 20 ≈ 36%
99% 50 ≈ 61%
99% 100 ≈ 37%
Read that table aloud in a room. Even a 99-percent-reliable step, well beyond today's frontier on open-ended actions, collapses to worse than a coin flip across a hundred-step process. And genuine enterprise autonomy is a hundred-step process. Scaling models raises p. It cannot repeal the exponent.

The only architectures that escape this law are the ones that change the failure algebra itself: verify each step against ground truth, catch the error at the step where it occurs, and correct or escalate before it propagates. That is precisely what a symbolic verification layer does, and it is why this architecture is not a preference, it is the mathematically required response.
Section 05 – Why not just an agent
MCP tools architecture

An LLM agent with database tools is not the same claim as this

The fastest way to build something that looks like this is to give a capable language model a set of MCP tools that query your relational databases directly, and let it reason its way to an answer. It is also, on its own, the wrong foundation for a decision a bank has to stand behind. Here is the actual argument, not the marketing version.

THE FAILURE MODE

Retrieval grounds the prompt. It does not ground the arithmetic.

Pulling rows back from Postgres over MCP proves the agent looked at real data. It does not prove the number in its final answer was actually derived from those rows rather than pattern-completed alongside them. A model can retrieve the correct approval date and still state the wrong delay, because the retrieval step and the reasoning step are not the same operation, and only one of them is verifiable after the fact.

THE FAILURE MODE

Raw relational schemas were never meant to carry meaning.

A foreign key tells you two rows are related. It does not tell you whether that relationship means "gates," "depends on," or "was assigned by," and an LLM asked to infer the semantics of an unfamiliar schema on the fly will guess, confidently, based on column names and comments. That is exactly the hallucination surface: the model is not inventing facts so much as inventing meaning for facts that were never disambiguated to begin with.

THE FAILURE MODE

Multi-hop joins compound the error at every step.

A forensics question like this one is rarely a single lookup, it is a chain: find the gating approval, find its actual grant date, find overlapping resource assignments, difference against plan. An agent composing that chain live, one tool call at a time, can make a small misjudgment at any hop, and that error propagates silently into every step downstream of it. There is no checkpoint where the chain is validated as a whole before the answer is delivered.

THE FAILURE MODE

Non-determinism is invisible until two people compare notes.

Two executives asking the same question in two separate sessions can get two different numbers from an agentic pipeline, because sampling, tool-call ordering, and context-window contents all vary run to run. Nobody notices until the discrepancy surfaces in a meeting, at which point the question becomes which answer, if either, was correct, and there is no principled way to tell.

THE FAILURE MODE

A single autoregressive step cannot certify its own correctness.

Language models have no mechanism to internally verify a computed result before emitting it; generation and verification are the same forward pass. A model can produce fluent, structured, wrong reasoning with exactly the same confidence as fluent, structured, right reasoning. Confidence, as expressed in token probabilities, is not calibrated to correctness on multi-step arithmetic and schedule logic.

THE FAILURE MODE

An unbounded tool surface is an unbounded attack and error surface.

An agent with broad MCP access to raw databases can, in principle, be steered by a cleverly worded question, a poisoned record, or an ambiguous instruction into running a query nobody intended, and nothing in the architecture stops it from trying. A read-only, narrowly typed verb layer cannot be steered into an action it was never given, because the action was never wired up in the first place.

What this system does instead

The agentic pattern is not wrong to use, it is wrong to trust as the only layer between a question and a number that matters. This system keeps the language model exactly where it is reliable: turning a computed, structured result into a sentence, and removes it entirely from the two places it is unreliable: deciding what the answer is, and deciding how to get there. The reasoning that produces the number is a hand-written, tested, version-controlled function, not a live chain of tool calls a model improvises per question.

Section 06 – The market's own evidence
Gartner Hype Cycle

Peak demand, built on post-trough foundations

Gartner's 2025 Hype Cycle makes a startling statement, if you read it as a risk map rather than a trend report. AI Agents sit at the very top of the Peak of Inflated Expectations: maximum budget, maximum hype, maximum distance from verified evidence. Knowledge Graphs sit on the Slope of Enlightenment: hype wrung out, capability confirmed. The market's loudest promise is at maximum decoupling from evidence at the exact moment its quietest foundation has finished paying the trough's tuition.

The wrapper contradiction

The industry is disappointed in GenAI's reliability, so it gave it more responsibility.

Generative AI and Foundation Models are descending into and through the Trough of Disillusionment in 2025. The agentic peak is being built on top of a substrate the market is simultaneously souring on: a new peak of expectations stacked directly on top of an active disillusionment.

The honest response is not to give the technology more responsibility. It is to give it more structure.

The trough as competitive advantage

The trough is not our risk. The trough is our habitat.

The Trough of Disillusionment is where procurement changes character: demos stop working, proof starts mattering, and the buyer's question shifts from "what could this do?" to "what can you verify it does?"

Every element of this positioning, publishable results, deterministic reasoning, constraint-violation rates, provenance coverage, is the evidentiary standard that trough-era procurement demands and peak-era vendors cannot meet. Hype cycles do not kill categories; they kill claims that cannot survive measurement.

Where demand lives
AI Agents
Peak of Inflated Expectations.
Maximum budgets. Maximum hype.
Maximum distance from verified evidence.
Where our foundation lives
Knowledge Graphs
Slope of Enlightenment.
Hype wrung out.
Capability independently confirmed.
Gartner's own projection: over 40% of agentic AI projects will be cancelled by end of 2027, citing escalating costs, unclear business value, and inadequate risk controls. The pattern behind every failure is identical: impressive demos, ungrounded architecture, unverifiable behavior, stalled deployment. This is not an AI problem. It is an architecture problem, which means it is solvable by architecture.
Section 07 – The cost of guessing
The cost of guessing

This is not a hypothetical risk. It is a recurring one

01

A steering committee acts on a number nobody can trace.

A status report says a milestone is "on track, minor risk." Three weeks later it slips. When the committee asks why the earlier report didn't say so, the honest answer is that the report summarized a feeling, not a computation. Nobody can point to the record that changed.

02

An auditor asks what was known, and when.

Regulatory reviews do not ask "what is true now." They ask what your organization believed on a specific date, and whether that belief was reasonable given what was knowable then. Most systems only hold today's state. Reconstructing a past belief means reconstructing it from memory, email threads, and whoever is still employed.

03

A capacity decision is made on a gut feel about headcount.

"Can we take on Open Banking this quarter" gets answered in a meeting, by whoever speaks last, based on whoever they happened to talk to that week. The actual allocation data, who is assigned to what, at what percentage, already exists somewhere. It is rarely the thing consulted.

04

A model gives a fluent answer to a question it cannot actually compute.

Modern language models are extremely good at sounding certain. That is precisely the failure mode a bank cannot afford: a plausible-sounding number, delivered with total confidence, that was never actually computed from a record. Fluency and correctness are different properties, and most tools only optimise for the first.

05

Model risk review has nothing to validate against.

If the reasoning path from question to answer cannot be inspected, it cannot be signed off on by the people whose job is to sign off on model risk. A black box that happens to be right most of the time is not a control, it is an unmanaged exposure with a good track record so far.

06

Every fix becomes a new prompt, not a new rule.

When a pure language-model system gets a wrong answer, the usual remedy is to adjust the prompt or add a few more examples. That does not generalise, and it does not leave behind anything an engineer can point to later as the rule that was applied. A computed system fixes the underlying function once, and every future answer inherits the fix.

Each of these is avoidable, not by writing better prompts, but by changing what is allowed to answer a question in the first place.

Section 08 – What this actually covers
Four capabilities

Four capabilities, one underlying system

Everything below runs on the same computed, evidenced, refusal-capable core. The difference between them is only the question being asked and the depth of the answer, not the trust model.

FORENSICS

Why is it late, and what would have prevented it.

Given a milestone, the system walks the actual chain of gating approvals, resource assignments, and dependency events that produced its current schedule position, then computes a counterfactual: what the schedule would look like if one factor had gone differently. This is the flagship path, and the one that runs end to end today.

The chain is not a narrative written by a model, it is a sequence of real record lookups: find the gating approval, find its actual grant date, find any overlapping resource assignments in the same window, and difference the result against the plan. Every step is a query against stored events, not a token generated to sound plausible.

PORTFOLIO

Every project the twin knows, honestly labeled.

A live view across the full portfolio, not a single milestone. Every KPI shown is computed on demand from current records rather than pre-baked into a report, and every project card is labeled by how much of it is actually wired into the twin, rather than implying uniform coverage that does not yet exist.

This labeling is deliberate and enforced at the data layer: a project only appears as fully covered once its entities and relationships pass validation against the ontology below. Partial coverage is shown as partial, not smoothed over. A dashboard that cannot admit its own gaps is not trustworthy in the places where it happens to be complete either.

TIME TRAVEL

What did we know, as of a specific date.

Because every fact in the system is stamped with both the moment it became true in the world and the moment the system learned it, any past state of belief can be reconstructed exactly. Ask what was known on January 15th, and the answer reflects only what had been recorded by that date. Nothing learned afterward leaks backward into it.

Mechanically, this is a filtered query over the event log: every fact is retained forever, never overwritten, and the query simply excludes anything whose transaction time is later than the as-of date requested. Nothing is deleted or rewritten to make history look cleaner than it was.

SELECT * FROM events WHERE entity_id = 'm_204' AND tx_time <= '2026-01-15' ORDER BY valid_time DESC LIMIT 1;
ARCHITECTURE

Every layer, inspectable, for the people who have to sign off on it.

A full, seven-layer breakdown, from the frozen ontology at the bottom to the executive surface at the top, with the specific open-source tool behind each layer and the exact path a question travels through them. This is written for architects and risk teams who need to evaluate the system on its engineering merits, not take it on faith.

Concretely: a hand-authored RDF/OWL ontology validated with SHACL shapes, a bitemporal event store queried directly, a deterministic Python reasoning function per question type, one typed MCP tool exposing it, a narrow intent match from question to tool, and a narration pass that only summarizes what the tool already returned. Every hop writes to a provenance log as a side effect, not as an afterthought.

L1 ontology (.ttl, pySHACL) → L2 event store (Postgres, bitemporal) → L3 reasoning (deterministic Python) → L4 MCP verb → L5 intent match + narration → L6 UI, with L0 provenance wrapping every hop
How to say it in a room
An LLM is a model of language. Your business runs on facts.
Prompts are suggestions. Ontologies are law.
We don't ask the model to be right. We make wrongness detectable.
Structure is the moat. Prompts are the commodity.
Hallucination isn't a bug in an ungrounded model. It's the expected behavior.
If it can't be audited, it can't be automated.
Section 09 – One question, end to end
One question, end to end

"Why is the payments milestone late?"

Why is the payments milestone late?
verb: attribute_delay( milestone_id: "m_204" )

The go-live for m_204 slipped by , about three weeks. The gating security approval a_88 sat idle for before it was granted, and once cleared, the two people who hold the required integration skill were both already committed to another task through May 4, pushing the earliest feasible start to May 5. Counterfactual: had the approval cleared immediately on its creation date, the milestone .

entity_idm_204
fielddue_date / actual_completion
due_date2026-05-25
actual_completion2026-06-15

Slip is computed as the gap between these two dates, not stored as a field anywhere.

entity_ida_88
fieldstatus
valueidle → approved
valid_time2026-01-15idle status recorded
valid_time2026-01-24approved status recorded

idle_days is derived at query time from these two events, never stored as a static field.

entity_idm_204
fieldcounterfactual
assumptiona_88 clears on 2026-01-05, its creation date
hypothetical_completion2026-02-15
basisskilled people confirmed free at that start date, so the milestone would have hit its original 2026-05-25 due date

This exact question, live, is under Deep Analysis in the menu above.

Section 10 – A second question, a harder one
A second question, a harder one

"What did we know about payments as of January 15th?"

What did we know about the payments milestone as of January 15, 2026?
verb: reconstruct_asof( entity_id: "m_204", as_of_date: "2026-01-15" )

As of 2026-01-15, the twin's records showed the gating security approval a_88 as , and zero risks logged against the milestone. The approval had not yet cleared, and the resource contention that ultimately pushed the earliest feasible start to May 5th had not yet occurred, because neither event had happened yet. This is not a summary written after the fact. It is the actual state of belief on January 15th, reconstructed from the record as it stood then.

entity_ida_88
fieldstatus
valueidle
valid_time2026-01-15state of the world on the as-of date
tx_time2026-01-15query issued as of this date, no later knowledge admitted
risks_known_count0

Nothing recorded after January 15th is allowed to leak backward into this answer. That is what makes it a reconstruction of belief, not a rewritten history.

This exact question, live, is under Portfolio Q&A in the menu above.

Section 11 – Built for scrutiny
Built for scrutiny

Designed to survive the audit, not just the demo

AUDIT TRAIL

Every question ever asked of the system is permanently logged, who asked, which verb answered, when. Not the answers you choose to keep. Every question, by anyone.

The log itself is append-only and structured, not free text: actor, verb, inputs, outputs, and a timestamp, written as a side effect of the call, not as a separate step someone can forget to run.

INSERT INTO prov_log (actor, verb, inputs, outputs, ts) VALUES ('exec_review', 'attribute_delay', '{"milestone_id":"m_204"}', '{...}', now());
LINEAGE

Every fact carries two clocks, valid_time and tx_time. Any past state of knowledge can be reconstructed exactly, which is the literal shape of the question a regulator asks: what did you know, and when did you know it.

This is a bitemporal data model, not a version history bolted on after the fact. Facts are never overwritten or deleted; a correction is a new row with a later tx_time, so the record of what the system believed at any past moment is preserved exactly as it was believed, errors included.

REPLAYABILITY

The reasoning layer is deterministic. The same question against the same data yields the same answer, every time. There is no temperature, no sampling, no "it depends" in the math.

The language model's only job is narration: converting a structured result into a sentence. Swap the narration model entirely and the computed answer, the chain, the counterfactual, does not change. That separation is what makes the answer independently checkable by someone who does not trust language models at all.

VALIDATION

Every fact is checked against a fixed schema before it is trusted. The ontology defines the allowed classes, relationships, and shapes in advance, and incoming data is validated against those shapes before it can be reasoned over.

This is enforced with SHACL, a W3C standard for validating graph data, not an internal convention that depends on every engineer remembering to check. Data that does not conform is rejected at the boundary; it never reaches the reasoning layer in a shape the system was not designed to handle.

ACCESS CONTROL

The verb layer is the only surface that can act, and it is narrow by design. Each verb declares exactly what it reads and what, if anything, it can write. Read-only questions and any future action that changes real data are architecturally distinct categories.

No verb in the current system writes to anything. The moment a write-capable verb exists, a human sign-off gate sits in front of it by construction, not by policy that can be skipped under pressure.

Section 12 – Objections, answered
Objections, answered

The questions a hostile CTO will ask

Every one of these has been asked. None of them invalidates the architecture. Here is the actual argument, not the marketing version.

Scale raises per-step reliability; it cannot repeal the exponent. Ninety-nine percent per step across a hundred-step workflow is still roughly 37% end to end, and no amount of scale converts a prompt (a suggestion) into a constraint (a guarantee), nor conjures provenance from a probability distribution. The strongest evidence is the labs' own behavior: they keep bolting symbolic machinery (tool use, code execution, structured outputs, retrieval) onto their models. If scale alone solved it, they would not need to.

They did, before the technology that now accelerates them. Neural extraction with expert validation has collapsed construction timelines, and the rollout is incremental: one high-value domain first. More importantly, compare asset classes: a prompt library is replicable by any competitor in days; the graph appreciates with every use and its switching costs work for you, not for a model vendor. The irony worth stating aloud: LLMs' greatest enterprise contribution may be making it cheap to build the structures that discipline LLMs.

RAG retrieves text chunks by similarity and hopes the model reads them correctly: single-hop lookup, no constraints, no reasoning, no guarantees. This architecture traverses typed relationships across multiple hops, validates every proposed action against formal rules before execution, and returns answers with provenance attached. One is a better search box. The other is a system of record that can act. The difference is not a matter of degree; it is architectural category.

It failed at perception, at the knowledge-acquisition bottleneck, and at brittleness on messy input: the three problems neural networks definitively solved. The hybrid keeps the proofs and adds the perception; each paradigm covers exactly the other's collapse mode. DeepMind's AlphaGeometry paired a neural model with a symbolic deduction engine and solved Olympiad geometry problems at near gold-medal level (Nature, 2024). The systems that actually achieved verified machine reasoning at the frontier are neuro-symbolic. That is the published record, not our marketing.

First correct the metric: the unit of value is not tokens generated but tasks completed, verified, and safe to automate, cost per verified outcome, including risk. Then look at the graveyard: MIT's 2025 finding that roughly 95% of enterprise GenAI pilots produced no measurable P&L impact; Gartner's projection that 40%+ of agentic projects will be cancelled by 2027. Pilots die at the same wall every time: no auditor, no insurer, no compliance officer will sign off on unverifiable behavior. Verification is not overhead on the ROI. Verification is what unlocks it, because it is what lets automation move from demo to production.

Brittleness and auditability are in direct tension: there is no free lunch here, and any system that claims otherwise is hiding the brittleness somewhere else. What the ontology boundary actually does is make brittleness visible and locatable: when a new entity type is needed, the system refuses and says so, rather than improvising an answer that feels right but carries no guarantee. The alternative, an open-ended model that handles anything, does not eliminate the boundary, it just moves it somewhere you cannot inspect. A known, documented constraint is preferable to an unknown one.

Section 13 – Where this stands today

What runs end to end today: all five verbs, attribute_delay, run_scheduler, reconstruct_asof, simulate_scenario, and the honest refusal path, each one a deterministic engine, each one evidenced to the raw row. Every answer in this deck is live, computed against the deployed digital twin at the moment you read it, not a script written to look convincing.

Each of the five was proven end to end, stress-tested, and only then followed by the next, one path at a time rather than five shallow paths shipped at once. The full reasoning for that build order, and every layer's specific technology choice, is documented in the Architecture page in the menu above.

Where this is, and is not, the right answer

The fastest way to be dismissed as another AI vendor is to claim this approach is necessary everywhere. It is not. Where stakes are low and a human reviews every output, drafting, summarisation, internal search, a plain language model is cheap, fast, and sufficient. Say so without hesitation. Structured intelligence becomes mandatory at a specific, nameable boundary.

Where a plain LLM is sufficient

  • Drafting, summarisation, and internal search where a human reviews every output
  • Brainstorming and ideation where being approximately right is acceptable
  • Content generation where errors are recoverable and low-stakes
  • Single-turn Q&A with no downstream autonomous action

Where this architecture is required

  • The system acts autonomously: no human reviews before execution
  • Outputs carry financial, legal, or regulatory consequence
  • The workflow chains enough steps for the compounding law to bite
  • An auditor, regulator, or insurer must be able to sign off on the reasoning
Fallback, offline capture

If the live system is unreachable

The computed answer

verb: attribute_delay( milestone_id: "m_204" ) result: 21-day slip (due 2026-05-25, completed 2026-06-15) cause_1: a_88 idle 9 days (2026-01-15 to 2026-01-24) cause_2: resource contention, sk_int held only by p_09, p_14, both committed to t_130 through 2026-05-04 counterfactual: milestone hits its original due date if a_88 clears immediately on its 2026-01-05 creation date evidence: a_88 { status: idle, valid_time: 2026-01-15 } a_88 { status: approved, valid_time: 2026-01-24 }

The refusal

query: how is team morale on Payments result: refused, no Sentiment or Morale class in the ontology ontology_class_count: 14 No verb, no evidence, no guess.