Verify the ledger yourself.
Every prediction DeepMap AI makes is written to a SHA-256 hash chain before the validity window opens. Each row links to the previous row’s hash — if any row were altered after the fact, every subsequent row’s computed hash would break. This page shows the most recent rows and lets you verify the chain is intact, right now, in your browser.
The chain is also periodically anchored to the Bitcoin blockchain via OpenTimestamps, which gives each batch a non-repudiable wall-clock lower bound. Endpoints: /api/v1/ledger/recent • /api/v1/ledger/integrity.
| # | Prediction | Predicted at (UTC) | Prev hash | Stored hash | Recomputed | OK |
|---|---|---|---|---|---|---|
| Click “Re-hash & verify” to pull the most recent rows. | ||||||
How the in-browser verification works.
- The page calls /api/v1/ledger/recent?limit=N to pull the most recent N prediction rows.
- For each row, the browser canonicalizes the payload fields (hazard_type, region, lat, lon, risk_score, predicted_at, valid_until, model_name, features) using the same ordering the server uses.
- It prepends the previous row’s stored hash and computes SHA-256 with window.crypto.subtle.digest.
- If the recomputed hash matches the stored row_hash, the row is intact. If it doesn’t, the chain has been tampered with.
This is the same verification logic common/prediction_ledger.py ⇒ verify_hash_chain() runs server-side during every pipeline run. If you see all ✓ on this page, every third party running the same script will see the same result.