Skip to main content
←All work

04 · Client project

Client project — Pundit OÜ, closed beta with live data

Pundit

Skill-based esports prediction platform for Pundit OÜ — CS2 and Dota 2, closed beta with live match data already flowing.

Visit pundit.gg →↗
Year
2026
Duration
Closed beta
Discipline
Platform · Data · Product
Pundit — pundit.gg
pundit.gg

Outcome

1,005

URLs in the sitemap — 1,000 of them individual match pages

─ 01 · Challenge

The challenge.

Esports predictions sit next to a heavily regulated category, so positioning had to be exact from day one: Pundit OÜ and its own legal counsel classify the platform as a skill contest, not gambling — a legal position we implemented but did not draft or verify ourselves. The second problem is what closed beta usually means — an empty landing page and a signup form. The goal here was the opposite: real match data, live and public, before the doors open.

─ 02 · Work

The work.

Built on Next.js and Vercel with Clerk handling auth. Live scores flow from a PandaScore data feed into six public sections: /matches (56 matches on the index), /tournaments (59), /rankings, /leaderboard, /seasons, and /news. The sitemap carries 1,005 URLs, 1,000 of them individual match pages. An AI assistant, PunditCoach, is built into the product. Access to the contest itself runs through a waitlist and PUNDIT-XXXX beta codes. HSTS and CSP security headers are in place.

─ 03 · Outcome

The outcome.

The platform is live in closed beta with real data anyone can check: six sections open without a code, 56 matches and 59 tournaments on the index pages, and a 1,005-URL sitemap. The skill-contest classification is the client's own legal position, published on their site — not a legal opinion offered by Norvalda. No audience metrics claimed — the beta is closed.

Process · 4 phases

  1. 01

    Positioning + spec

    Phase 1

    Implemented the client's skill-contest framing (a legal classification from Pundit OÜ and their own counsel, not drafted or verified by Norvalda) and the closed-beta access model: waitlist plus PUNDIT-XXXX codes, with public data sections open regardless.

  2. 02

    Data layer

    Phase 2

    PandaScore feed wired in for live CS2 and Dota 2 scores. Match, tournament, ranking, and season data modeled so every match gets its own indexable page.

  3. 03

    Build

    Phase 3

    Next.js on Vercel, Clerk auth, HSTS and CSP headers. Six public sections shipped, plus the PunditCoach AI assistant. Sitemap grew to 1,005 URLs — 1,000 of them match pages.

  4. 04

    Beta run

    Ongoing

    Closed beta live: waitlist and beta codes gate the contest, while matches, tournaments, rankings, leaderboard, seasons, and news stay open on live data.

What shipped

6

sections open to the public during closed beta

  • 011,005-URL sitemap — 1,000 individual match pages
  • 026 sections open during closed beta: matches, tournaments, rankings, leaderboard, seasons, news
  • 03Live scores from a PandaScore data feed — 56 matches and 59 tournaments on the index pages
  • 04PunditCoach AI assistant built into the product
  • 05Skill-contest legal classification — the client's own position, implemented as stated, not a Norvalda legal opinion
  • 06Next.js on Vercel, Clerk auth, HSTS and CSP security headers