All case studies

Chessable to PGN

Web scraping and data export

A desktop tool that extracts a chess coach's paid Chessable courses into standard PGN files, organized by chapter with the author's inline comments preserved, ready to import into opening trainers like Lichess and Chessbook. The coach runs it himself on his Mac from his own logged-in session, so new courses convert without sharing a password or re-hiring.

  • Python
  • Lichess
  • python-chess
  • customtkinter
  • Requests
  • websocket-client

Problem

A chess coach wanted his paid Chessable courses as importable PGN files for an opening trainer, with the author's between-move commentary intact. Copying lines by hand was slow, and reading the moves with AI image transcription misread pieces. He also wanted to run it himself on courses he buys later, not pay for each one.

What Inteloflow built

  • A client that reads the coach's own active Chessable session to pull his purchased courses through Chessable's API, so no password is shared and there is no brittle screen-scraping or image OCR
  • Move-tree extraction with python-chess that rebuilds each chapter's lines into standard PGN, nesting shared-start variations as RAV side-lines and keeping custom-position drills as separate games
  • Author commentary and evaluation marks preserved into PGN comment blocks, the part the coach cared about most
  • Output organized one folder per course and one PGN per chapter, in either nested or flat-per-variation form
  • A macOS desktop app, plus a CLI, that the coach runs himself: log into Chessable once, pick courses, export, and repeat on any course he buys later

Outcome

  • PGN output round-trips through python-chess with zero parse errors and imports cleanly into Lichess
  • Comments, nested variations, and custom starting positions all survive the export, ready for his opening trainer
  • The coach can re-run it on new courses himself, with no password shared and no freelancer to re-hire

Stack

Python, python-chess, customtkinter (desktop GUI), requests and websocket-client (Chrome DevTools Protocol session bridge).

Book a callWhatsApp Vishaal