Chess Play Visualizer

Langflow
Python scraping
Matplotlib
The chess visualizer takes a Chess.com or Lichess.org username and returns detailed statistics on the user's gameplay. I went for visuals rather than bare numbers because visuals are more intuitive especially considering requests would be from hobbyists.
The application runs a Langflow instance that gets the user's game statistics using python.

The python script then creates visuals for this user's gameplay. The player streak (recent sequence of wins, losses, draws), game time preferences, and ECO (Encyclopedia of Chess Openings) style vector are computed and used to get statistics on their ECO coverage (reflecting the diversity of their gameplay), unique openings, and favorite openings. Scores for tactical sharpness, positional play, opening knowledge, aggressive style, solid defense, time management, and consistency are also computed.
Bar, radar, and spider charts are generated for visualization.
curl -X POST "http://77.68.100.188:7860/api/v1/run/0831bf0c-06e4-436a-86a5-86f73c4fed24/your_username"
The graphs and charts are saved in a directory called `chess_reports` within the directory acting as context for command prompt/ terminal when the command is run.
Here is sample output showing a player's frequent openings by ECO family and top 15 most played openings. These statistics are relevant because a player's game strategy is heavily influenced by the opening moves, which essentially dictate that game's strategy.

Here are radar chart statistics for an experienced player, guessworkceoke, JKUAT Chess Club chairperson 2022-2023. The first shows his preferred openings by family and frequency while the second characterizes his gameplay strategies, showing relative strengths.

The chart below shows his
opening knowledge strength, (unique openings played / 30) * 100
, capped at 100
positional play strength, (count of positional openings / total openings) * 500
, capped at 100
tactical sharpness, (count of tactical openings / total openings) * 500
, capped at 100
rating strength, (current rating / 2500) * 100
, capped at 100
consistency, based on current win/loss streak stability, 100 - (absolute value of streak * 10)
, capped at 100, higher score = more consistent results (shorter streaks)
time management, higher score = plays longer, more thoughtful time controls
solid defense, based on frequency of defensive opening families (D and E ECO codes), (D&E family openings / total openings) * 100, h
igher score = prefers solid, defensive openings
and aggressive play, based on frequency of aggressive opening families (B and C ECO codes), (B&C family openings / total openings) * 100, h
igher score = prefers aggressive, attacking openings
