Back to projects

London, Ontario

4 min read

BeaconChess

A chess coach that explains every move in plain English, with Stockfish and Maia-2 running locally in your browser.

React · TypeScript · Vite · Stockfish 18 (WASM) · Maia-2 (ONNX) · Cloudflare Pages · Polar

BeaconChess mid-game: a blunder flagged on the board, with Beacon's plain-English read beside it After 2.Ba6?? — BeaconChess flags the blunder, Beacon explains it in plain English, and the Maia-2 opponent takes the bishop.

BeaconChess is a chess coach that lives in your browser and explains every move in plain English. You play human-like opponents, and after each move the coach, Beacon, tells you what just happened on the board in words rather than engine numbers. It’s a live product at beaconchess.com.

What it does

An engine tells you “-2.3, best was Nf3.” BeaconChess turns that into a sentence, spoken as your opponent: “That lets me fork your knight and rook.”

  • Move-by-move coaching — every move is graded, and blunders, hanging pieces and missed tactics are named in plain English
  • Punish lines — when you blunder, the line that punishes it plays out on the board so you can see why
  • Human-like opponents — ten levels from roughly 1100 to 2000, played by Maia-2, a neural network trained to predict the moves real people make
  • Post-game recap — the moments that decided the game, with the move Beacon preferred
  • Import your games — Lichess and Chess.com games get the same coached analysis
  • Local-first — no account; games and settings stay on your device, with a portable backup you can export

How it’s built

Everything that thinks about chess runs in the browser. There are no inference servers.

  • Frontend — React, TypeScript and Vite, served as a single-page app from Cloudflare Pages
  • Opponent — Maia-2 (CSSLab, NeurIPS 2024), converted from PyTorch to ONNX and run with onnxruntime-web in a Web Worker. The model downloads once from Cloudflare R2 and is cached; an opening book and rating-aware sampling shape how it plays
  • Grading — Stockfish 18 compiled to WebAssembly in its own Web Worker, grading at depth 14, with static exchange evaluation, designed so an equal trade isn’t flagged as a hung piece
  • Coaching prose — deterministic, human-authored rules and templates rather than an LLM, checked by a quality gate that replays hand-reviewed positions against required evidence and forbidden claims
  • Backend — a small, stateless Cloudflare Pages Function that validates licenses with Polar; games and analysis never touch it
  • One language — the coaching layer was once ported to Rust and WebAssembly, then consolidated back into TypeScript over 112 commits, using test corpora captured before the port as the spec; no fixture was edited, and a 3.9 MB engine download disappeared from the bundle
  • Delivery — changes deploy to an alpha site gated by live end-to-end tests before they are promoted to production

FAQ

Is it a subscription? No. It’s a one-time personal license with no automatic renewal: $79 for the first 100 customers, then $99 (as of September 2026).

What can I try for free? One full game at Beginner strength, with move grading and plain-English coaching, plus three imported games. No email or card required.

Does the coach use an LLM? No. Maia-2 predicts the moves people play, Stockfish grades them, and the coaching prose comes from deterministic rules written by hand.

Is my data private? Positions are analyzed on your device, and games and settings are stored in your browser. There’s no BeaconChess account.

What if I don’t love it? There’s a 30-day, no-questions refund.

Why I built it

After a lost game, an engine tells you “-2.3, best was Nf3.” That teaches you nothing. A human coach would say the knight move walks into a fork and show you the punish, but coaches cost $40–$80 an hour and can’t watch every game you play. For me, nothing stuck until someone explained why a move was bad, not just that it was. So I built the thing in between: one payment, unlimited games, and a coach that never gets tired or forgets your last mistake. A study tool should be something you own.