Total Recall hackathon · Tatum x Walrus · Track 01: Markets & Sports Prediction

Building Hindsight: a pick journal that remembers who was right

November 2026

An open journal whose price lines turn into glowing memory blocks
Demo video, about two and a half minutes.

The problem: nobody keeps score

Everyone takes market calls from someone: a desk analyst, a loud account on X, a friend in a group chat, their own gut. The calls arrive with confidence attached ("95%, trust me") and vanish once the deadline passes. Nobody goes back to check who was right, so the loudest voice keeps the same weight as the most accurate one.

Hindsight is a journal that keeps score for you. You log a call with who made it, the asset, the target, the deadline and how sure they were. When the deadline passes, Hindsight checks the live price, marks the call right or wrong, and remembers it. Over time it learns whom to trust, and that knowledge changes what the app shows you.

What it does

Diagram: a call is priced by Tatum, written to Walrus Memory, and recalled memory drives trust, consensus, briefings, lessons and the memory analyst, whose insights are written back to Walrus.
How the pieces fit: Tatum scores, Walrus remembers, recalled memory changes what you see.

How it uses Walrus Memory

Walrus Memory is the long-term brain. Every event becomes a plain-English memory written to Sui mainnet through the managed relayer with the @mysten-incubation/memwal SDK, in the namespace hindsight:

[hindsight:pick]    Voice "@MoonBoyMax" called SUI ABOVE $0.931 ... with 97% confidence
[hindsight:outcome] Voice "@MoonBoyMax" was WRONG on SUI ABOVE $0.931 ... Record now 0/3 right, trust 8%
[hindsight:lesson]  Voice "@MoonBoyMax" has been wrong 3 times in a row. Fade or ignore their next call.

Writing memories as sentences rather than JSON was deliberate. Semantic recall() works well on them, and a person can read the memory directly. Structure lives inside the sentence ("was RIGHT", "at 80% confidence", id=p_…), so the app can still parse it back.

Recall drives three features:

  1. Briefings: recall('What happened before when voice "X" called SUI?') runs before every new call.
  2. Ask Hindsight: free-text questions go straight to recall().
  3. Rebuild trust from Walrus: the strongest test of the design. Hindsight recalls the outcome memories, parses them and recomputes every voice's trust without touching its local database. The local state is a cache; the memory on Walrus is the source of truth, and it is portable to any other app holding the key.

The memory analyst: answers that cite Walrus

Recall returns raw memories. To turn them into something a person can act on, Hindsight adds a small analyst that sees only the memories recalled from Walrus for that request, numbered, and must cite them. Three things use it:

The analyst never sees the local database, only recalled memories, so every claim it makes can be traced to a blob on Walrus mainnet. Without an API key the app still works; Ask simply lists the recalled memories.

Every memory is a real blob on Walrus mainnet. Each receipt in the app links to Walruscan, which shows the blob's size, its Sui object, the certification transaction and the SEAL encryption step that Walrus Memory applies before storing it.

Writes go through a paced queue (about one every 13 seconds) because the relayer limits each delegate key to a few remember calls per minute. Rate-limit responses are retried, and every successful write is kept as a receipt with its Walrus blob ID, shown in the app.

How it uses Tatum

query($a: SuiAddress!) {
  address(address: $a) { balance(coinType: "0x2::sui::SUI") { totalBalance } }
}

How it learned over time

To show the loop end to end, I seeded the journal with four voices with different habits and let their calls resolve against live Tatum prices on 7 November 2026:

VoiceHabitRecordTrust
@OnchainOtterActive Sui wallet, reads SUI flows3/3 right84%
Priya (desk analyst)Careful analyst, modest targets, honest confidence3/4 right71%
MeGut feelings0/2 right32%
@MoonBoyMaxLoud and always bullish, always 90%+ sure0/5 right4%

Within minutes the memory had told a story no single call could. These are the lessons and reflections it wrote back to Walrus:

Voice "@MoonBoyMax" missed a 92%-confidence SOL call. Their high-conviction calls may be overconfident.
Voice "@MoonBoyMax" has been wrong 3 times in a row. Fade or ignore their next call until they recover.
Voice "@MoonBoyMax" is poorly calibrated: confidence does not match results. Treat their confidence numbers with caution.
Voice "@MoonBoyMax" is weak on SUI: only 0/3 right. Discount their SUI calls.
Voice "@OnchainOtter" is on a 3-call hot streak. Their next call deserves extra weight.
Voice "@OnchainOtter" reads SUI well: 3/3 right. Trust their SUI calls.
On SUI, which closed at $0.871, @OnchainOtter went 3/3 at 78–82% confidence, while @MoonBoyMax went 0/3 calling it above $0.915–$0.932 at 95–99% confidence.
Priya (desk analyst) was right 3 of 4 times at 60–75% confidence, missing only her lowest-confidence call (SOL, 60%), while @MoonBoyMax went 0/5 at 90–99%.
"Me" took the opposite side of Priya on both BTC and ETH and lost both, missing narrowly: BTC closed $75980 versus $75911, ETH $2243 versus $2246.

Then the consensus panel changed. On the open SUI calls the crowd was split or leaning bullish, while the trust-weighted view, built from what Walrus remembered, leaned clearly bearish, so Hindsight flagged that memory flips the crowd's view.

Finally, Rebuild trust from Walrus recovered every outcome from memory alone and reproduced the same ranking. Every number in that table can be rebuilt from blobs on Walrus mainnet.

The trust formula

Trust = 0.7 × Bayesian hit rate (one imaginary hit and one imaginary miss as a prior) + 0.4 × (calibration − 0.25), where calibration is 1 − Brier score. A voice that is right 60% of the time at honest 60% confidence beats one that is right 60% of the time while claiming 95%.

Consensus counts one vote per voice (their latest open call on that asset). The crowd view is a plain headcount; the weighted view multiplies each vote by trust × stated confidence × evidence, where evidence = (n + 1) / (n + 3) for n scored calls, so a voice with no record cannot outweigh one with a proven record.

Try it

git clone https://github.com/Automationbot24x7/hindsight && cd hindsight
npm install
cp .env.example .env   # Tatum key + Walrus Memory delegate key and account ID
npm start              # http://localhost:8787

The hosted demo is a read-only snapshot of the live journal: the calls, outcomes, lessons and blob IDs are real, and the full receipt list is in receipts.json.

What's next