fig. 03for chess players · 2026 · experimental

Project

Experimental

Kibitz

Chess PGN Analyzer

Paste a PGN and get a coach-level review — Stockfish finds the critical moments, OpenAI explains them in plain language.

Observed
Experimental proof-of-concept exploring the boundary between deterministic engines and LLM reasoning.
Built
PGN input · Stockfish critical-moment detection · OpenAI natural-language commentary · Cross-game pattern detection · Personalised study plan
Kibitz — PGN input showing a chess game ready for analysis

What it is

Kibitz is a game review tool for chess players who want more than a blunder count. Paste any PGN and it runs the game through Stockfish to identify the critical moments — then passes those to OpenAI, which returns coach-style explanations in plain language.

Each analysis produces a game summary, a list of critical moments with move-by-move commentary, a mistakes breakdown, and a set of targeted training tasks. Analyze multiple games and Kibitz surfaces recurring patterns: your weaknesses across games, your strengths, and a personalised study plan.

Why experimental

The project sits at the edge of what both tools do well. Stockfish is deterministic and precise; OpenAI explanations vary depending on the position's complexity. Some analyses are genuinely insightful, others more generic. Kibitz is honest about that — it's a proof of concept built to explore whether the combination is useful, not to claim it always is.

How it works

  1. Paste a PGN and select which side you played
  2. Stockfish evaluates every position and flags evaluation swings
  3. Critical moments are extracted and sent to OpenAI with positional context
  4. OpenAI returns a summary, critical moment commentary, mistakes, and training tasks
  5. Analyze more games and Kibitz identifies patterns across them — weaknesses, strengths, and a study plan

Stack

  • Next.js and TypeScript
  • Stockfish via WebAssembly for engine analysis
  • OpenAI API for natural language explanations
  • Tailwind CSS

Screenshots

Kibitz — Analysis output — summary, critical moments with coach-style commentary, and targeted training tasks
Analysis output — summary, critical moments with coach-style commentary, and targeted training tasks
Kibitz — Cross-game patterns — recurring weaknesses and strengths that emerge across multiple analyses
Cross-game patterns — recurring weaknesses and strengths that emerge across multiple analyses
Kibitz — Study plan — personalised recommendations based on your pattern profile
Study plan — personalised recommendations based on your pattern profile

What I learned

  • The seam between systems is a design problem. Stockfish gives centipawn evaluations; OpenAI needs narrative context. I had to build an intermediate layer — board snapshots with positions, captures, and trade sequences — so the LLM had enough material to say something specific.
  • Cross-game patterns are the real value. Single-game analysis is useful but forgettable. “You keep losing piece coordination after winning material” — that kind of insight only emerges across many games.
  • LLM inconsistency is the real constraint. Some positions produce sharp coaching; others produce generic advice. I couldn't fully control which, and that taught me more about LLM limitations than any benchmark would have.
  • Shipping imperfect work is its own skill. Building something you know is imperfect and releasing it anyway is a different discipline than building something polished.

Next steps

  • Interactive board for stepping through analysis move by move
  • Better positional context passed to OpenAI for more specific explanations
  • User accounts to persist and revisit past analyses