H
← Journal
LancementJune 21, 2026 · 6 min read

Heoshua ships its first tool: a live tracker for the 2026 World Cup

Our very first public tool is live — a Telegram bot that tracks your submission to the Zindi WC2026 Goal Prediction Challenge in real time: RMSE, F1, ranking, and goal alerts.

H
Heoshua Team
From Lomé, Togo

Big things start small.

Today, Heoshua is shipping its very first public tool: a Telegram bot that tracks your submission to the Zindi World Cup 2026 Goal Prediction Challenge in real time — match after match, goal after goal, alert after alert.

The problem

This challenge has an unusual structure. You train your models on historical data, you build your predictions — then submissions are locked on June 19, 2026, just before the tournament kicks off. From that moment on, you can't change a thing.

The tournament then unfolds over 104 matches and six weeks, from early June to mid-July. The Zindi leaderboard updates periodically — but with no granularity, no transparency, no way to know which match moved your score, or in which direction.

For the entire World Cup, you're in the dark. Is your RMSE rising or falling? Have you climbed the ranking since yesterday? Impossible to tell — until now.

What the tracker does

The bot replays your submission against the tournament's real results in real time. With every confirmed goal and every final whistle, it recalculates and pushes straight to Telegram:

  • RMSE on cumulative predicted goals per team — 60% of the final score
  • Macro F1 on the seven exit stages (group, round of 16, quarter-finals, semi-finals, third place, final, champion) — 40% of the score
  • Your combined score 0.6 × RMSE + 0.4 × F1 and your rank within the cohort, live
  • A personalized alert on every goal and every match end, with the quantified impact on your metrics

The result: instead of waiting for an opaque leaderboard update, you know exactly why your score moved — and by how much.

We wanted a tool we'd use ourselves during the competition. Here it is — and it's open to everyone.

The interface: everything in Telegram commands

No app to install, no account to create. Everything runs from Telegram with eight commands:

  • /setname — choose your leaderboard name (required before any other command)
  • /upload — send your CSV submission; the bot validates and stores it
  • /me — your live RMSE, F1, and rank, anytime
  • /rank — the real-time overall leaderboard
  • /team <ISO3> — a team's status and your prediction for it
  • /today · /yesterday — today's and yesterday's matches
  • /scorers — the tournament's top scorers
  • /standings [group] — the group standings

Three steps to start: launch the bot, choose your name with /setname, send your CSV with /upload. After that, the bot runs on its own until July 19.

What building it taught us

This tracker looks simple from the outside. It wasn't.

Replaying a submission live. Predictions are frozen, but the tournament moves continuously. Every goal changes cumulative goals per team and potentially the predicted exit stage. You have to recompute the metrics on each event idempotently — without one match's data polluting the next match's calculation.

Handling multiple submissions. A competitor can upload several versions of their CSV before the deadline. The bot accepts the latest valid version and archives the earlier ones without overwriting them, to keep retrospective recalculations possible.

Calibrating alerts. Too many alerts, nobody reads them. Too few, the tool loses its value. We chose: an alert on every goal (immediate RMSE impact) and an alert on every match end (F1 and overall rank impact). No more.

What's next

This bot is the first visible building block of what we're making: tools born from competition, refined through practice, open to the community.

The source code is open on GitHub — you can audit it, fork it, propose improvements. The detailed technical learnings (architecture, metric computation, Telegram event handling, submission replay) will be the subject of a dedicated article in the Journal.

The tournament runs until July 19, 2026. Until then, we track, we measure, we publish. Every tool we build feeds the next.

Big things start small.


Update · June 2026 — The leaderboard goes web

Since launch, one piece of feedback kept coming up: Telegram requires payment in some regions, and some participants wanted to track their score without creating an account. That's now possible.

A web leaderboard, no Telegram needed

The page heoshua.com/en/tool/wc2026 now offers:

  • Live leaderboard — refreshed every 60 seconds from the same API that powers the Telegram bot.
  • Web CSV upload — drop your file directly on the page, pick a leaderboard name (2–32 characters), and get your RMSE, F1 and rank in seconds. No account required — a session is stored in your browser.
  • Share your rank — a button copies a formatted text snippet ready to paste: rank, RMSE, F1, and the link to the leaderboard.

What stays in Telegram

Per-goal and full-time alerts continue to go through Telegram — that's where the real-time value is strongest. The web handles everything else: checking scores, uploading, leaderboard, and the star-rating feedback widget.

Architecture

The FastAPI layer that backs the bot now exposes POST /upload, GET /me, GET /leaderboard, POST /feedback, and GET /feedback/summary. SQLite calls from async FastAPI handlers go through asyncio.to_thread with check_same_thread=False. The Next.js frontend consumes these endpoints via NEXT_PUBLIC_BOT_API_URL on the client side.

Discover the tool →
H
Written by the Heoshua team
A Public Benefit Corporation putting AI to work for humanity, from Togo.
← All articles