PredictionTalk
Home  /  Docs  /  How the calendar works

How the events calendar works

Everything on the calendar is sorted into one of six groups, and every date is taken from an official schedule rather than guessed. This page says what each group holds and where its dates come from.

The six groups

Use the buttons at the top of the calendar to show or hide each one.

Sports

National and club football matches you can bet on. Matches with no betting available anywhere are hidden.

🎮 Esports

CS2, Dota 2 and League of Legends tournaments (Majors, The International, Worlds) — both single matches and who-wins-the-whole-thing bets.

📊 Economy

The days the big economic numbers come out: US interest-rate decisions, inflation, and the monthly jobs report. Each row carries the flag of the country it belongs to.

💼 Company results

The days big US companies say how much they earned — Apple, Meta, Nvidia and others, plus the crypto-linked ones like Coinbase and Strategy. Each row carries the company logo.

🪙 Crypto

Token unlocks, new listings, network upgrades and exchange launches.

Featured

Everything else worth watching: elections, big cultural moments, tech launches, world events.

Where the dates come from

Every event records exactly which schedule it was read from — a league fixture list, a central-bank calendar, a company investor-relations page. We refresh them every six hours, and a date is never extrapolated from a pattern: if a quarter has not been announced yet, the row simply is not there.

Source Feeds into Origin Refresh
polymarket-wc Sports (FIFA World Cup 2026 fixtures + MLS) Polymarket gamma-api (tag_slug=fifa-world-cup, tag_slug=mls) Every 6 hours
sportsdb Sports (EPL fixtures + international friendlies) TheSportsDB free tier (eventsnextleague.php) Every 6 hours
curated-tournament Esports (TI 2026, PGL Singapore Major, etc.) Hand-maintained list in scripts/events/sources/curated-tournaments.mjs. Verified against Liquipedia. On deploy
curated-macro Macro (FOMC, CPI, NFP, ISM PMI, jobless claims) Hand-maintained list in curated-macro.mjs. Verified against the Fed FOMC calendar + BLS release schedule. On deploy
curated-earnings Earnings (US large-cap Q2/Q3 2026) Hand-maintained list in curated-earnings.mjs. Dates verified against company IR pages. On deploy
xo-market Enrichment only — tournament tiles + fixture tiles on esports panels XO Data API (curated catalog, ~30-40 active markets) Every 6 hours
limitless Enrichment only — venue tiles on WC + other fixtures Limitless active-markets API Every 6 hours
predict-fun Enrichment only — WC tournament-winner + fixture tiles Predict.fun mainnet API (auth via API key) Every 6 hours
kalshi Enrichment only — macro, politics, tech and awards tiles Kalshi public trade API (no auth, ~7.5k open events) Daily

Logo & flag registry

All visual assets (company logos, game logos, country flags) live in one file — scripts/events/assets.mjs. Change a logo URL once and every source picks it up on the next pipeline run.

To swap a logo: edit scripts/events/assets.mjs, redeploy. All sources import from here — no need to hunt through adapter files.

What you see in the side panel

Each row keeps the one schedule that owns its date. Everywhere you can bet on it is then attached underneath as a card, in two groups:

Visual conventions

Adding a new event

For events on venues we already pull (Polymarket / XO / Limitless / Predict.fun), the pipeline auto-attaches them — nothing to do. For curated additions:

  1. Pick the right file: tournament → curated-tournaments.mjs, macro release → curated-macro.mjs, earnings → curated-earnings.mjs.
  2. Add an object with slug, title, startAt (ISO UTC), and category-appropriate metadata (heroImage, heroColor, countryFlag).
  3. Deploy scripts to the server. The next pipeline run (every 6h) picks it up.