The Morning Slate

The Morning Slate · Verifier

Verify a prediction

Recompute the SHA-256 hash of any prediction we've published. The hash math runs in your browser — we never receive what you compute. If you arrived via a prediction <code>?id=</code> link, your browser also fetches that prediction's canonical fields from our public dataset to populate the form; the hash computation itself never leaves your machine. You can also do it yourself, fully offline, with the snippets below.

The prediction

Prediction ID
cmae1447567753fec060f491ab
Fixture
Ipswich vs Liverpool (EPL)
Market
MATCH_RESULT
Selection
DRAW (Draw)
Model probability
0.2477
Edge %
4.36
Drivers
  1. Home Elo advantage: -110 (1569 vs 1679)
  2. Form: home 0.60 / away 0.35
  3. Recent xG avg: home 1.68 / away 1.68
Risk
(none)
Schema version
betclarity-prediction-v2
Published (UTC)
2026-09-01T02:10:07.343Z
Kickoff (UTC)
2026-09-04T19:00:00.000Z

Live recomputation

(Verification will appear here once data is provided.)

Canonical JSON

{"drivers":["Home Elo advantage: -110 (1569 vs 1679)","Form: home 0.60 / away 0.35","Recent xG avg: home 1.68 / away 1.68"],"edgePercent":4.36,"fixtureId":"cmt29v8yq0e3z01mve001dqc3","kickoffAt":"2026-09-04T19:00:00.000Z","market":"MATCH_RESULT","modelProbability":0.2477,"publishedAt":"2026-09-01T02:10:07.343Z","risk":"","schemaVersion":"betclarity-prediction-v2","selection":"DRAW"}

These are the exact bytes we took the SHA-256 of. Copy them into any SHA-256 tool to verify the hash above yourself.

Don't trust us, do it yourself

// Recompute the SHA-256 of this prediction's canonical input.
import { createHash } from "node:crypto";

const canonical =
  `{"drivers":["Home Elo advantage: -110 (1569 vs 1679)","Form: home 0.60 / away 0.35","Recent xG avg: home 1.68 / away 1.68"],"edgePercent":4.36,"fixtureId":"cmt29v8yq0e3z01mve001dqc3","kickoffAt":"2026-09-04T19:00:00.000Z","market":"MATCH_RESULT","modelProbability":0.2477,"publishedAt":"2026-09-01T02:10:07.343Z","risk":"","schemaVersion":"betclarity-prediction-v2","selection":"DRAW"}`;

const computed = createHash("sha256").update(canonical, "utf8").digest("hex");
console.log("computed:", computed);
console.log("expected:", "107e1ab9d9bc9766b2e311ff58915c45ef3efa00ce0c128de48affec6fbb3b06");
console.log("match:   ", computed === "107e1ab9d9bc9766b2e311ff58915c45ef3efa00ce0c128de48affec6fbb3b06");