Skip to case record
Work/Product & Operating

Explainable Trust — Traceable Case Reconstruction

Can an AI-assisted case workspace update a living case without erasing the path by which the case was constructed?

TypeBuilt Product Prototype
MaturityWorking Prototype
Updated2026-08-19
Claim boundary: Not production-ready privacy architecture
When a situation is still vague, people naturally start connecting the missing pieces. Explainable Trust moves that reconstruction out of memory and into an inspectable record: what was reported, what is supported, what is inferred, what changed, and what is still unknown.
Type: Built Product Sample<br>Stage: Completed sample app · Runnable locally<br>Evidence basis: Runnable application, implemented end-to-end case flows, repository behavior, automated tests, and product screenshots<br>Last updated: August 2026<br>Boundary: The sample demonstrates case reconstruction, correction, provenance, local persistence, bounded public retrieval, and export. It is not deployed as a production service and does not include shared accounts, cloud collaboration, or an operational verification layer.

Why I built this

The app started from a simple observation: when information is incomplete, the mind does not like leaving the story unfinished. We connect a message to a screenshot, a remembered detail to a public rule, one person's account to another source. That is useful, but over time it becomes difficult to remember where the evidence ended and the reconstruction began.

The burden gets heavier when a situation unfolds across messages, files, corrections, public sources, and multiple possible explanations. The person has to keep reconstructing the timeline, evidence, assumptions, unresolved questions, and next step in their head.

I built Explainable Trust to externalize that work. The product does not try to make uncertainty disappear by producing a more confident answer. It keeps the current state inspectable: what is known, what is only reported, what is inferred, what remains open, and how the reasoning changed when new information arrived.

Customer support and disputes are one use case, but not the boundary. The same problem appears in purchases, public events, personal decisions, and smaller everyday situations where facts arrive gradually and from sources with different strengths.


The product question

An uncertain situation rarely arrives as a clean set of facts. It arrives as fragments with different strengths: a first-person statement, a document, an image, a public rule, a later correction, or a claim that may still be unsupported. The product needs to help reconstruct the situation without collapsing those differences into one confident narrative.

The product question is:

Can an AI-assisted workspace help a person reconstruct a situation under uncertainty without losing the distinction between evidence, report, inference, and what is still unknown?

Because that state can change, a second requirement follows: new information should update the case without erasing how the previous state was constructed.

The working flow is:

Describe → reconstruct → inspect → trace reasoning → correct → reconcile → expose gaps → decide what to check next

How the app works

The core design choice is simple: the model can propose changes, but the application owns the record.

1. Start or import a case. The application creates a local case ledger in the browser rather than treating the chat transcript as the record.
2. Submit a statement and optional files. A user can add text, PDFs, images, or text-based files, then choose Analysis only or Web-assisted for that run.
3. Preserve the intake before interpreting it. The original statement remains verbatim. Uploaded files receive case-linked metadata and a SHA-256 fixity hash.
4. Let the model propose a change, not rewrite the case. Gemini returns typed operations for events, claims, evidence relationships, gaps, actions, and reasoning.
5. Validate before committing. Application code allocates canonical IDs, reconciles corrections against existing entities, validates the complete candidate revision, and commits it atomically. If validation fails, the last accepted case remains unchanged and the rejected run is retained for audit.
6. Project one ledger into several views. The same accepted state appears as a readable response, timeline, findings, evidence inventory, gaps and actions, interactive case and reasoning DAGs, and a Toulmin argumentation view. Clickable IDs connect each view back to its sources. Selecting a node highlights the connections leading to it, so a user can trace a claim or finding through the reasoning that supports, qualifies, or leaves it unresolved instead of visually scanning the whole graph.
7. Carry the case forward. A later message creates a child revision. Clear corrections retain stable entity IDs; ambiguous corrections fail closed instead of silently creating a duplicate.
8. Export or import through separate paths. The user can download a case-view JSON, copy a Markdown case report or provenance dossier, and print the case view. The importer separately accepts a valid Ledger V3 JSON; the current export and import formats are not a one-click backup-and-restore pair.

Working demo — one case, two messages

This small test starts with a traffic-accident report. The user describes the collision, suspected drunk driving and leaving the scene, vehicle damage, an X-ray visit, and uncertainty about compensation and legal handling. No official police or medical evidence has been added yet.

1 · The first message becomes a case, not only an answer

The first intake is projected into a case view with a user goal, timeline events, findings, unresolved gaps, and proposed next actions. The response can still explain the current situation in plain language, but the structured record remains separately inspectable.

2 · A later correction changes the affected state

In the second message, the user corrects the accident time from 18:30 to 19:15 after checking dashcam data and adds information about the other driver. The correction is kept as a new source statement rather than silently replacing the earlier one.

The useful behavior is not that the model can notice a correction. It is that the application can reconcile the affected event and claim while preserving the earlier source, the new source, and the revision path between them.

3 · Unknowns stay visible instead of being completed by the model

The case still has no admitted evidence for the official accident record or the medical result. Those remain open gaps, with actions asking for scene images/video and medical documents. A source-linked finding can also preserve its scope and limitation rather than presenting a reported statement as independently verified fact.

That distinction matters here because the product is not trying to turn a user narrative into a verified legal conclusion. It is trying to make reported state, supporting evidence, missing evidence, and next action easier to separate.

4 · Provenance can be inspected as a network

The case graph makes the dependency structure visible: user statements connect to events and claims; those records expose unresolved gaps; gaps connect to proposed actions. A correction can therefore be inspected for what it changed downstream instead of disappearing inside a rewritten summary.

Product decisions

What the completed sample includes

The architectural constraint is deliberate: a provider response is not the case. A candidate revision becomes authoritative only after application-side reconciliation, full-ledger validation, and successful browser commit.

What the sample deliberately does not include

No truth or legal determination. It does not independently prove that a user statement is true, decide liability, authenticate an object, determine eligibility, or guarantee that legal or policy analysis is correct.
No automatic access to private systems. It has no connector to a police, hospital, insurer, marketplace, employer, or customer account. Case-specific confirmation must come from a user-supplied record or a direct response from the responsible organization.
No shared cloud workspace. There are no user accounts, server-side case database, team permissions, real-time collaboration, or automatic cross-device sync. The authoritative case remains in the current browser.
No round-trip backup package. The current JSON export is a projected case view for review or downstream use, while import accepts the authoritative Ledger V3 format. They are not yet a single portable backup-and-restore flow.
No fully offline model analysis. In a live run, the submitted statement and supported files are sent through the application server to the configured Gemini provider. The narrower privacy boundary applies to public-web retrieval: Tavily receives only a validated public query and official-domain filters, not the raw private case.
No unrestricted web research. Public results are admitted only when a direct first-party or responsible public-authority source can support the specific public claim. Media, forums, social posts, aggregators, and model memory cannot close an evidence gap.
No forced correction matching. If the target of a correction is ambiguous, the application rejects the candidate change rather than guessing or creating a silent duplicate.
No certified chain of custody. File hashes help detect content changes, but they are not digital signatures, identity verification, notarization, or independent evidence certification.
No production assurance. The sample does not claim production-grade authentication, security/privacy audit, monitoring, service availability, regulatory compliance, or readiness for unrestricted high-stakes deployment.

If I extended the sample

The scoped sample is complete, but the original product direction was broader than a standalone case workspace. The longer-term idea is a privacy-preserving resolution channel in which the user keeps control of the case, linked organizations can update the process without taking ownership of the user's record, and the product learns from patterns only when users explicitly allow it.

A real-world pilot would first test the current product behavior:

1. Correction reliability: when do users phrase a correction clearly enough for stable-ID reconciliation, and when should the system stop and ask?
2. Evidence behavior: do users understand the difference between reported claims, admitted evidence, inference, and unresolved gaps?
3. Recovery burden: after several revisions, can a user still understand what changed and what they need to do next without reading the full history?
4. Transfer: does the same case structure remain useful outside disputes, for example customer-support escalation, insurance, workplace incidents, or other evidence-heavy pathways?

From case workspace to resolution channel

The next product step would not be to make the app know more about the user. It would be to let the case move between parties while revealing less identity than a normal support workflow.

The design goal would be anonymous at the application layer: the app would not need a conventional user profile, and the server would operate on opaque case identifiers rather than treating real-world identity as part of the product. A user could choose to link a case to a company, platform, insurer, public body, or other responsible party through a bounded case channel. The linked party could then send requests for evidence, status changes, review outcomes, deadlines, or next actions back into the same case record.

For the user, this would turn repeated support contact into a visible process: what the organization has received, what is still missing, who or what is currently waiting, what changed, and what happens next. For the organization, especially customer service, the same structure could reduce repeated explanation, duplicate evidence requests, inconsistent handoffs, and uncertainty about the current case state.

A consented analytics model, not silent data extraction

By default, the individual case would remain private. A separate opt-in would ask whether the user wants to contribute de-identified case signals to aggregate analytics.

The commercial hypothesis is that linked organizations would pay for those aggregate operational signals, not for access to an identifiable person's case. Useful outputs could include where resolution pathways repeatedly stall, which evidence is most often missing, where customers need repeated contact, how long different states persist, and which handoffs create avoidable recovery burden.

That creates a different incentive structure from advertising or hidden profiling: the user gets a clearer resolution pathway and can choose whether their de-identified experience contributes to system learning; the organization gets a better view of recurring operational friction; and the product earns from the analytics or integration layer rather than from making identity itself more valuable.

Build and repository

The public repository contains the runnable application, server boundary, Ledger V3 contract, deterministic proposal application, local persistence, retrieval controls, automated tests, evaluation configuration, and runtime notes.

Open Explainable-App on GitHub →

Read the runtime architecture → · Read the public-retrieval boundary →

Current takeaway

The prototype is most useful to me as a test of one product assumption: explainability is not only a better answer. It is the ability to inspect how a changing case reached its current state, what still supports that state, and what remains unresolved.