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

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
- Paste a PGN and select which side you played
- Stockfish evaluates every position and flags evaluation swings
- Critical moments are extracted and sent to OpenAI with positional context
- OpenAI returns a summary, critical moment commentary, mistakes, and training tasks
- 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



What I learned
- Stockfish gives centipawn evaluations. OpenAI needs narrative context. Passing raw numbers across that boundary produces vague commentary. I had to build an intermediate layer — board snapshots with piece positions, captures, and trade sequences — so the LLM had enough material to say something specific. The seam between deterministic and probabilistic systems is a design problem, not a plumbing one.
- Single-game analysis is useful but forgettable. Cross-game pattern detection — “you keep losing piece coordination after winning material” — turned out to be the feature that makes repeated use worthwhile. The value wasn't in one analysis; it was in what emerged across many.
- Some positions produce sharp, specific coaching. Others produce generic advice. I couldn't fully control which was which, and that inconsistency taught me more about LLM limitations than any benchmark would have.
- Building something you know is imperfect and shipping it anyway is a different skill than building something polished. Both matter. This project exercised the first.
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