{
  "match_info": {
    "home_team": "Czechia",
    "away_team": "South Africa",
    "tournament": "FIFA World Cup",
    "date": "20260618",
    "timezone": "America/New_York",
    "home_formation": "3-4-2-1",
    "away_formation": "4-2-3-1"
  },
  "prediction": {
    "most_likely_score": "1-0",
    "home_goals": 1,
    "away_goals": 0,
    "most_likely_score_probability": 0.1393,
    "top_5_scorelines": [
      {
        "score": "1-0",
        "probability": 0.1393
      },
      {
        "score": "2-0",
        "probability": 0.137
      },
      {
        "score": "1-1",
        "probability": 0.0949
      },
      {
        "score": "2-1",
        "probability": 0.0933
      },
      {
        "score": "3-0",
        "probability": 0.0898
      }
    ],
    "scoreline_probabilities": {
      "0-0": 0.0709,
      "0-1": 0.0483,
      "0-2": 0.0164,
      "0-3": 0.0037,
      "0-4": 0.0006,
      "1-0": 0.1393,
      "1-1": 0.0949,
      "1-2": 0.0323,
      "1-3": 0.0073,
      "1-4": 0.0012,
      "2-0": 0.137,
      "2-1": 0.0933,
      "2-2": 0.0318,
      "2-3": 0.0072,
      "2-4": 0.0012,
      "3-0": 0.0898,
      "3-1": 0.0611,
      "3-2": 0.0208,
      "3-3": 0.0047,
      "3-4": 0.0008,
      "4-0": 0.0441,
      "4-1": 0.03,
      "4-2": 0.0102,
      "4-3": 0.0023,
      "5-0": 0.0173,
      "5-1": 0.0118,
      "5-2": 0.004,
      "5-3": 0.0009,
      "6-0": 0.0057,
      "6-1": 0.0039,
      "6-2": 0.0013,
      "7-0": 0.0016,
      "7-1": 0.0011
    },
    "outcome": {
      "home_win": 0.6775,
      "draw": 0.2026,
      "away_win": 0.1199
    },
    "markets": {
      "over_2_5_goals": 0.4933,
      "under_2_5_goals": 0.5067,
      "btts_yes": 0.4247,
      "btts_no": 0.5753,
      "home_clean_sheet": 0.5061,
      "away_clean_sheet": 0.14
    },
    "home_ratings": {
      "DR": 80.74,
      "MCR": 86.69,
      "ATR": 86.84,
      "GK": 82.06
    },
    "away_ratings": {
      "DR": 85.55,
      "MCR": 88.46,
      "ATR": 77.96,
      "GK": 88.24
    },
    "insights": {
      "summary": "Antagonist matchup analysis for Czechia vs South Africa. Most likely scoreline: 1-0. Lambdas derived from 5 home and 4 away individual player duels.",
      "key_player": "Projected scorer(s): Patrik Schick",
      "tactical_analysis": "Tactical parity between 3-4-2-1 and 4-2-3-1. Match outcome driven primarily by individual player quality. Midfield is evenly contested — Tomáš Souček vs Teboho Mokoena will be the pivotal duel. Total antagonist xG — Home: 1.36, Away: 0.34. Home danger zone: Right Wingback vs Left Back — Overlapping Run. Away danger zone: CAM vs CM."
    },
    "confidence": 0.8,
    "home_lambda": 1.966,
    "away_lambda": 0.681
  },
  "pregame_baseline": {
    "fair_win_probability": {
      "home_win": 0.6775,
      "draw": 0.2026,
      "away_win": 0.1199
    },
    "favorite": "Czechia",
    "favorite_win_probability": 0.6775,
    "fair_spread": 1.285,
    "fair_total": 2.647,
    "prop_estimates": [
      {
        "market": "team_total_goals",
        "selection": "Czechia",
        "estimate": 1.966,
        "probability": null,
        "unit": "goals"
      },
      {
        "market": "team_total_goals",
        "selection": "South Africa",
        "estimate": 0.681,
        "probability": null,
        "unit": "goals"
      },
      {
        "market": "over_2_5_goals",
        "selection": "yes",
        "estimate": 2.5,
        "probability": 0.4933,
        "unit": "probability"
      },
      {
        "market": "both_teams_to_score",
        "selection": "yes",
        "estimate": 1.0,
        "probability": 0.4247,
        "unit": "probability"
      },
      {
        "market": "clean_sheet",
        "selection": "Czechia",
        "estimate": 1.0,
        "probability": 0.5061,
        "unit": "probability"
      },
      {
        "market": "clean_sheet",
        "selection": "South Africa",
        "estimate": 1.0,
        "probability": 0.14,
        "unit": "probability"
      },
      {
        "market": "anytime_goal",
        "selection": "Tomáš Holeš (Czechia)",
        "estimate": 0.7568,
        "probability": 0.0857,
        "unit": "xG"
      },
      {
        "market": "anytime_goal",
        "selection": "Relebohile Mofokeng (South Africa)",
        "estimate": 0.199,
        "probability": 0.0,
        "unit": "xG"
      },
      {
        "market": "assist",
        "selection": "Vladimír Coufal (Czechia)",
        "estimate": 0.1744,
        "probability": 0.1455,
        "unit": "xA"
      },
      {
        "market": "assist",
        "selection": "Relebohile Mofokeng (South Africa)",
        "estimate": 0.2079,
        "probability": 0.0,
        "unit": "xA"
      }
    ],
    "expected_pace": {
      "tempo": "balanced",
      "expected_total_goals": 2.647,
      "expected_total_shots": 18,
      "expected_total_passes": 733,
      "expected_pressing_actions_per_90": 12.4,
      "possession_home_pct": 50.2,
      "possession_away_pct": 49.8,
      "notes": "possession projects near even"
    },
    "expected_game_script": {
      "favorite": "Czechia",
      "favorite_win_probability": 0.6775,
      "script": "Czechia is the fair winner side, but the baseline remains favorite-led: fair spread +1.28 goals and fair total 2.65.",
      "first_half": "Expect balanced tempo while both sides test the matchup thesis; shot baseline is about 9 first-half attempts.",
      "second_half": "If level after halftime, midfield control and bench quality should decide territory; South Africa must keep the match inside one goal.",
      "late_game": "A Czechia lead likely shifts toward control and counters; a draw state keeps set pieces and transition chances live."
    },
    "key_matchup_thesis": "Czechia chance creation leans on Tomáš Holeš against Aubrey Modiba in Right Wingback vs Left Back — Overlapping Run; possession projects near even.",
    "expected_rotation_usage_behavior": [
      "Czechia: starters carry the main goal usage through Patrik Schick; bench watchlist: Pavel Šulc, Lukáš Horníček, Michal Sadílek.",
      "South Africa: starters carry the main goal usage through the highest xG attackers; bench watchlist: Iqraam Rayners, Samukelo Kabini, Olwethu Makhanya.",
      "Assist usage should flow through Alexandr Sojka; late lineup changes should re-score these allocations."
    ],
    "pregame_play_by_play": [
      "0-15: Czechia tries to establish the projected edge; track possession and first-shot share.",
      "15-45: Baseline expects balanced tempo, about 9 total first-half shots, and 1.32 first-half xG pace.",
      "45-70: If the match is level, watch midfield control and the listed bench watchlists for usage changes.",
      "70-90: If South Africa is chasing, transition and set-piece volume become the primary live deviation signal."
    ],
    "invalidation_triggers": [
      "Early red card, injury, or goalkeeper change for Czechia.",
      "South Africa wins the midfield/territory battle beyond the possession baseline.",
      "Pace collapses: first 25 minutes fall well below the shot and box-entry baseline.",
      "Set pieces, penalties, or second balls create more danger than the open-play matchup thesis."
    ],
    "top_3_risk_factors": [
      {
        "factor": "Low-event scoring variance",
        "impact": "One penalty, deflection, or missed big chance can overwhelm the fair win probability."
      },
      {
        "factor": "Late lineup or role change",
        "impact": "A pregame XI, injury, or tactical role shift can invalidate player prop and usage estimates."
      },
      {
        "factor": "Discipline and set-piece volatility",
        "impact": "Cards, fouls in dangerous zones, and corner volume can change the expected game script quickly."
      }
    ]
  },
  "teams": {
    "Czechia": {
      "formation": "3-4-2-1",
      "players": {
        "Patrik Schick": {
          "player_id": 280609,
          "position": "F",
          "position_depth": "F",
          "is_starter": true,
          "shirt_number": 10,
          "height": 191,
          "market_value": 16600000,
          "stats": {
            "expected_goals": 0.1961,
            "goal_rate": 0.001,
            "goals": 1,
            "shots_on_target": 1,
            "expected_assists": 0.0102,
            "key_pass": 0,
            "rating": 91.499,
            "minutes": 67,
            "total_shots": 2,
            "duels_won": 3,
            "aerial_won": 2,
            "total_pass": 7,
            "accurate_pass": 5,
            "total_long_balls": 1,
            "accurate_long_balls": 1,
            "total_opp_half_passes": 7,
            "accurate_opp_half_passes": 5,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 23,
            "possession_lost": 6.3792,
            "dispossessed": 1.2861,
            "duels_lost": 7,
            "aerial_lost": 3,
            "total_contest": 2,
            "won_contest": 1,
            "ball_recovery": 1,
            "challenges_lost": 1,
            "fouls": 2,
            "fouls_drawn": 2,
            "assists": 0,
            "shots_off_target": 2,
            "interceptions": 0,
            "tackles_won": 2,
            "tackles": 2,
            "clearances": 2,
            "blocks": 1,
            "big_chances_created": 0,
            "big_chances_missed": 2,
            "xgot": 1.8623,
            "offsides": 1,
            "ball_carries": 4,
            "total_progression": 4,
            "progressive_carries": 1,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.5,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.302,
            "pressing_faced": "LOW",
            "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
            "numerical_situation": "1v2",
            "opponent_defenders": "Mbekezeli Mbokazi, Ime Okon",
            "opponent_faced": "Mbekezeli Mbokazi, Ime Okon",
            "antagonist_source": "attacking_duel",
            "projected_goals": 1,
            "goal_probability": 0.2378,
            "projected_assists": 0,
            "assist_probability": 0.0235,
            "fifa_overall": 85.0
          },
          "latest_10_games": [
            {
              "match_id": 15186720,
              "match_date": "2026-06-12",
              "home_team": "South Korea",
              "away_team": "Czechia",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Czechia",
              "opponent": "South Korea",
              "stats": {
                "minutes": 64,
                "rating": 6.4,
                "assists": 0,
                "expected_assists": 0.0017,
                "total_shots": 0,
                "total_pass": 5,
                "accurate_pass": 3,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 2
              },
              "has_player_stats": true,
              "league_name": "FIFA World Cup",
              "league_id": "16",
              "league_slug": "world-championship",
              "league_country": "World",
              "season_id": "58210",
              "season_name": "World Cup 2026",
              "season_year": "2026"
            },
            {
              "match_id": 14065557,
              "match_date": "2026-05-16",
              "home_team": "Bayer 04 Leverkusen",
              "away_team": "Hamburger SV",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Bayer 04 Leverkusen",
              "opponent": "Hamburger SV",
              "stats": {
                "minutes": 90,
                "rating": 6.5,
                "assists": 0,
                "expected_goals": 1.0815,
                "expected_assists": 0.0139,
                "total_shots": 4,
                "shots_on_target": 3,
                "shots_off_target": 1,
                "total_pass": 9,
                "accurate_pass": 6,
                "tackles": 2,
                "clearances": 2,
                "aerial_won": 4,
                "duels_won": 7
              },
              "has_player_stats": true,
              "league_name": "Bundesliga",
              "league_id": "35",
              "league_slug": "bundesliga",
              "league_country": "Germany",
              "season_id": "77333",
              "season_name": "Bundesliga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14065248,
              "match_date": "2026-05-09",
              "home_team": "VfB Stuttgart",
              "away_team": "Bayer 04 Leverkusen",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Bayer 04 Leverkusen",
              "opponent": "VfB Stuttgart",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "assists": 0,
                "expected_assists": 0.1304,
                "total_shots": 0,
                "total_pass": 16,
                "accurate_pass": 13,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 2,
                "clearances": 2,
                "aerial_won": 2,
                "duels_won": 7,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Bundesliga",
              "league_id": "35",
              "league_slug": "bundesliga",
              "league_country": "Germany",
              "season_id": "77333",
              "season_name": "Bundesliga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14065236,
              "match_date": "2026-05-02",
              "home_team": "Bayer 04 Leverkusen",
              "away_team": "RB Leipzig",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Bayer 04 Leverkusen",
              "opponent": "RB Leipzig",
              "stats": {
                "minutes": 89,
                "rating": 9.2,
                "goal_rate": 3.0,
                "goals": 3,
                "assists": 0,
                "expected_goals": 2.8387,
                "expected_assists": 0.0207,
                "total_shots": 9,
                "shots_on_target": 5,
                "shots_off_target": 2,
                "total_pass": 19,
                "accurate_pass": 18,
                "aerial_won": 2,
                "duels_won": 5,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Bundesliga",
              "league_id": "35",
              "league_slug": "bundesliga",
              "league_country": "Germany",
              "season_id": "77333",
              "season_name": "Bundesliga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 15631372,
              "match_date": "2026-03-17",
              "home_team": "Arsenal",
              "away_team": "Bayer 04 Leverkusen",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Bayer 04 Leverkusen",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 20,
                "rating": 6.5,
                "assists": 0,
                "expected_assists": 0.0046,
                "total_shots": 0,
                "total_pass": 5,
                "accurate_pass": 2,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "UEFA Champions League",
              "league_id": "7",
              "league_slug": "uefa-champions-league",
              "league_country": "Europe",
              "season_id": "76953",
              "season_name": "UEFA Champions League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 13233684,
              "match_date": "2025-11-17",
              "home_team": "Czechia",
              "away_team": "Gibraltar",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Czechia",
              "opponent": "Gibraltar",
              "stats": {
                "minutes": 88,
                "rating": 6.4,
                "assists": 0,
                "total_shots": 4,
                "shots_off_target": 4,
                "total_pass": 18,
                "accurate_pass": 13,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 1,
                "duels_won": 3
              },
              "has_player_stats": true,
              "league_name": "World Cup Qual. UEFA",
              "league_id": "11",
              "league_slug": "world-championship-qual-uefa",
              "league_country": "Europe",
              "season_id": "69427",
              "season_name": "World Cup Qualification, UEFA 2026",
              "season_year": "2026"
            }
          ],
          "ranking": {
            "global_player_rank": 257,
            "combined_rank_score": 158.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 161.0,
            "sofascore_rating": 7.2375,
            "sofascore_appearances": 8.0,
            "fifa_rank": 156.0,
            "fifa_overall": 85.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 3,
            "squad_role": "starter",
            "projected_match_rating": 6.499,
            "source_file": "data/player_rankings.csv",
            "player_name": "Patrik Schick",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Yann Sommer",
                  "ranking": 252
                },
                {
                  "player_name": "Nikolai Ivanov",
                  "ranking": 253
                },
                {
                  "player_name": "Francisco Trincão",
                  "ranking": 254
                },
                {
                  "player_name": "Mathew Ryan",
                  "ranking": 255
                },
                {
                  "player_name": "Erick Pulga",
                  "ranking": 256
                }
              ],
              "lower": [
                {
                  "player_name": "Dávid Hancko",
                  "ranking": 258
                },
                {
                  "player_name": "Gerson",
                  "ranking": 259
                },
                {
                  "player_name": "Christian Eriksen",
                  "ranking": 260
                },
                {
                  "player_name": "Jean Lucas",
                  "ranking": 261
                },
                {
                  "player_name": "Nuno Mendes",
                  "ranking": 262
                }
              ]
            }
          }
        },
        "Adam Hložek": {
          "player_id": 963801,
          "position": "F",
          "position_depth": "F",
          "is_starter": true,
          "shirt_number": 9,
          "height": 186,
          "market_value": 10300000,
          "stats": {
            "expected_goals": 0.1597,
            "goal_rate": 0.0013,
            "goals": 0,
            "shots_on_target": 1,
            "expected_assists": 0.0259,
            "key_pass": 0,
            "rating": 83.9683,
            "minutes": 22,
            "total_shots": 2,
            "duels_won": 1,
            "aerial_won": 1,
            "total_pass": 4,
            "accurate_pass": 4,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 2,
            "accurate_opp_half_passes": 2,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 7,
            "possession_lost": 2.0156,
            "dispossessed": 2.0156,
            "duels_lost": 2,
            "aerial_lost": 1,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 1,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 1,
            "assists": 0,
            "shots_off_target": 1,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 1,
            "xgot": 0.7558,
            "offsides": 0,
            "ball_carries": 2,
            "total_progression": 14,
            "progressive_carries": 1,
            "dribbles_attempted": 3,
            "dribbles_successful": 1.0,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.366,
            "pressing_faced": "LOW",
            "matchup_zone": "Shadow Striker vs CDM + CB — Zone 14 Battle",
            "numerical_situation": "1v2",
            "opponent_defenders": "Thalente Mbatha, Mbekezeli Mbokazi",
            "opponent_faced": "Thalente Mbatha, Mbekezeli Mbokazi",
            "antagonist_source": "attacking_duel",
            "projected_goals": 0,
            "goal_probability": 0.1363,
            "projected_assists": 0,
            "assist_probability": 0.0306,
            "fifa_overall": 77.0
          },
          "latest_10_games": [
            {
              "match_id": 15186720,
              "match_date": "2026-06-12",
              "home_team": "South Korea",
              "away_team": "Czechia",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Czechia",
              "opponent": "South Korea",
              "stats": {
                "minutes": 26,
                "rating": 7.0,
                "assists": 0,
                "expected_goals": 0.1756,
                "expected_assists": 0.0315,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 4,
                "accurate_pass": 4,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "FIFA World Cup",
              "league_id": "16",
              "league_slug": "world-championship",
              "league_country": "World",
              "season_id": "58210",
              "season_name": "World Cup 2026",
              "season_year": "2026"
            },
            {
              "match_id": 14065559,
              "match_date": "2026-05-16",
              "home_team": "Borussia M'gladbach",
              "away_team": "TSG Hoffenheim",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "TSG Hoffenheim",
              "opponent": "Borussia M'gladbach",
              "stats": {
                "minutes": 14,
                "rating": 6.4,
                "assists": 0,
                "expected_goals": 0.3662,
                "expected_assists": 0.0043,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 2,
                "accurate_pass": 2,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Bundesliga",
              "league_id": "35",
              "league_slug": "bundesliga",
              "league_country": "Germany",
              "season_id": "77333",
              "season_name": "Bundesliga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14065252,
              "match_date": "2026-05-09",
              "home_team": "TSG Hoffenheim",
              "away_team": "SV Werder Bremen",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "TSG Hoffenheim",
              "opponent": "SV Werder Bremen",
              "stats": {
                "minutes": 1,
                "assists": 0,
                "expected_assists": 0.0072,
                "total_shots": 0,
                "total_pass": 4,
                "accurate_pass": 3,
                "aerial_won": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "Bundesliga",
              "league_id": "35",
              "league_slug": "bundesliga",
              "league_country": "Germany",
              "season_id": "77333",
              "season_name": "Bundesliga 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 15373,
            "combined_rank_score": 842.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 239.0,
            "sofascore_rating": 7.1,
            "sofascore_appearances": 1.0,
            "fifa_rank": 1445.0,
            "fifa_overall": 77.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 6,
            "squad_role": "starter",
            "projected_match_rating": 6.9683,
            "source_file": "data/player_rankings.csv",
            "player_name": "Adam Hložek",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Kyeong Baek",
                  "ranking": 15368
                },
                {
                  "player_name": "Jonathan Bamba",
                  "ranking": 15369
                },
                {
                  "player_name": "Kaku",
                  "ranking": 15370
                },
                {
                  "player_name": "Leo Román",
                  "ranking": 15371
                },
                {
                  "player_name": "Jakub Kiwior",
                  "ranking": 15372
                }
              ],
              "lower": [
                {
                  "player_name": "Lucas Bergvall",
                  "ranking": 15374
                },
                {
                  "player_name": "Alemão",
                  "ranking": 15375
                },
                {
                  "player_name": "Axel Disasi",
                  "ranking": 15376
                },
                {
                  "player_name": "Yastin Cuevas",
                  "ranking": 15377
                },
                {
                  "player_name": "Je-min Yeon",
                  "ranking": 15378
                }
              ]
            }
          }
        },
        "Jaroslav Zelený": {
          "player_id": 118204,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 20,
          "height": 189,
          "market_value": 640000,
          "stats": {
            "interceptions": 0,
            "tackles": 2,
            "tackles_won": 1,
            "clearances": 4,
            "aerial_won": 1,
            "rating": 78.803,
            "minutes": 85,
            "total_pass": 31,
            "accurate_pass": 26,
            "duels_won": 3,
            "total_long_balls": 2,
            "accurate_long_balls": 2,
            "total_own_half_passes": 20,
            "accurate_own_half_passes": 20,
            "total_opp_half_passes": 18,
            "accurate_opp_half_passes": 14,
            "crosses_total": 2,
            "crosses_accurate": 1,
            "touches": 51,
            "possession_lost": 5.8874,
            "dispossessed": 0.9812,
            "duels_lost": 2,
            "aerial_lost": 1,
            "total_contest": 1,
            "won_contest": 0,
            "ball_recovery": 6,
            "challenges_lost": 2,
            "fouls": 1,
            "fouls_drawn": 1,
            "blocks": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "assists": 0,
            "expected_goals": 0.0222,
            "expected_assists": 0.0463,
            "total_shots": 0,
            "shots_on_target": 0,
            "shots_off_target": 0,
            "big_chances_created": 1,
            "xgot": 0.0,
            "ball_carries": 9,
            "total_progression": 23,
            "progressive_carries": 1,
            "key_pass": 2,
            "opponent_faced": "Lyle Foster",
            "matchup_zone": "Shape fallback",
            "antagonist_source": "formation_fallback",
            "projected_goals": 0,
            "goal_probability": 0.0201,
            "projected_assists": 0,
            "assist_probability": 0.1054,
            "fifa_overall": 72.0
          },
          "latest_10_games": [
            {
              "match_id": 15186720,
              "match_date": "2026-06-12",
              "home_team": "South Korea",
              "away_team": "Czechia",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Czechia",
              "opponent": "South Korea",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assists": 0,
                "expected_assists": 0.0409,
                "total_shots": 0,
                "total_pass": 28,
                "accurate_pass": 22,
                "clearances": 5,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "FIFA World Cup",
              "league_id": "16",
              "league_slug": "world-championship",
              "league_country": "World",
              "season_id": "58210",
              "season_name": "World Cup 2026",
              "season_year": "2026"
            },
            {
              "match_id": 16073315,
              "match_date": "2026-05-24",
              "home_team": "AC Sparta Praha",
              "away_team": "FC Hradec Králové",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "AC Sparta Praha",
              "opponent": "FC Hradec Králové",
              "stats": {
                "minutes": 69,
                "rating": 6.5,
                "expected_goals": 0.0224,
                "expected_assists": 0.1082,
                "total_shots": 1,
                "total_pass": 44,
                "accurate_pass": 40,
                "key_pass": 3,
                "tackles": 2,
                "clearances": 1,
                "duels_won": 3
              },
              "has_player_stats": true,
              "league_name": "Czech First League",
              "league_id": "172",
              "league_slug": "1-liga",
              "league_country": "Czech Republic",
              "season_id": "77019",
              "season_name": "Chance Liga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 16073302,
              "match_date": "2026-05-12",
              "home_team": "AC Sparta Praha",
              "away_team": "FC Viktoria Plzeň",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "AC Sparta Praha",
              "opponent": "FC Viktoria Plzeň",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "expected_assists": 0.0031,
                "total_shots": 0,
                "total_pass": 29,
                "accurate_pass": 24,
                "tackles": 2,
                "tackles_won": 2,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 5,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Czech First League",
              "league_id": "172",
              "league_slug": "1-liga",
              "league_country": "Czech Republic",
              "season_id": "77019",
              "season_name": "Chance Liga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 13233684,
              "match_date": "2025-11-17",
              "home_team": "Czechia",
              "away_team": "Gibraltar",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Czechia",
              "opponent": "Gibraltar",
              "stats": {
                "minutes": 68,
                "rating": 8.3,
                "assists": 2,
                "total_shots": 0,
                "total_pass": 42,
                "accurate_pass": 39,
                "key_pass": 2,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 2,
                "clearances": 4,
                "aerial_won": 4,
                "duels_won": 6,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "World Cup Qual. UEFA",
              "league_id": "11",
              "league_slug": "world-championship-qual-uefa",
              "league_country": "Europe",
              "season_id": "69427",
              "season_name": "World Cup Qualification, UEFA 2026",
              "season_year": "2026"
            }
          ],
          "ranking": {
            "global_player_rank": 17301,
            "combined_rank_score": 1878.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 130.0,
            "sofascore_rating": 7.325,
            "sofascore_appearances": 8.0,
            "fifa_rank": 3626.0,
            "fifa_overall": 72.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 18,
            "squad_role": "starter",
            "projected_match_rating": 6.803,
            "source_file": "data/player_rankings.csv",
            "player_name": "Jaroslav Zelený",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Danilo",
                  "ranking": 17296
                },
                {
                  "player_name": "Lucas Boyé",
                  "ranking": 17297
                },
                {
                  "player_name": "Claudio Corvalán",
                  "ranking": 17298
                },
                {
                  "player_name": "Marc Bernal",
                  "ranking": 17299
                },
                {
                  "player_name": "Arouna Sangante",
                  "ranking": 17300
                }
              ],
              "lower": [
                {
                  "player_name": "Jon Gorenc Stanković",
                  "ranking": 17302
                },
                {
                  "player_name": "Mohamed Bayo",
                  "ranking": 17303
                },
                {
                  "player_name": "Andrew Omobamidele",
                  "ranking": 17304
                },
                {
                  "player_name": "Josef Martínez",
                  "ranking": 17305
                },
                {
                  "player_name": "Dennis Eckert Ayensa",
                  "ranking": 17306
                }
              ]
            }
          }
        },
        "Alexandr Sojka": {
          "player_id": 1403491,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 24,
          "height": 178,
          "market_value": 2200000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.1663,
            "assists": 1,
            "expected_goals": 0.1268,
            "rating": 88.7009,
            "minutes": 83,
            "total_pass": 33,
            "accurate_pass": 27,
            "ball_recovery": 3,
            "duels_won": 3,
            "total_shots": 1,
            "total_long_balls": 3,
            "accurate_long_balls": 2,
            "total_own_half_passes": 13,
            "accurate_own_half_passes": 11,
            "total_opp_half_passes": 21,
            "accurate_opp_half_passes": 17,
            "crosses_total": 4,
            "crosses_accurate": 1,
            "touches": 50,
            "possession_lost": 10.0085,
            "dispossessed": 0.9812,
            "duels_lost": 3,
            "aerial_won": 1,
            "aerial_lost": 1,
            "interceptions": 2,
            "tackles_won": 1,
            "tackles": 1,
            "clearances": 1,
            "total_contest": 1,
            "won_contest": 1,
            "challenges_lost": 2,
            "fouls": 1,
            "fouls_drawn": 1,
            "goal_rate": 0.0,
            "goals": 0,
            "shots_on_target": 1,
            "shots_off_target": 1,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 1,
            "xgot": 0.2944,
            "ball_carries": 14,
            "total_progression": 29,
            "progressive_carries": 1,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.7,
            "crosses_attempted": 2.2,
            "duel_win_rate": 0.393,
            "pressing_faced": "LOW",
            "matchup_zone": "Left Wingback vs Right Back — Overlapping Run",
            "numerical_situation": "1v1",
            "opponent_defenders": "Khuliso Mudau",
            "opponent_faced": "Khuliso Mudau",
            "antagonist_source": "attacking_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.0476,
            "projected_assists": 1,
            "assist_probability": 0.3283,
            "fifa_overall": 82.0
          },
          "latest_10_games": [
            {
              "match_id": 15186720,
              "match_date": "2026-06-12",
              "home_team": "South Korea",
              "away_team": "Czechia",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Czechia",
              "opponent": "South Korea",
              "stats": {
                "minutes": 84,
                "rating": 6.7,
                "assists": 0,
                "expected_assists": 0.1694,
                "total_shots": 0,
                "total_pass": 33,
                "accurate_pass": 26,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 2,
                "duels_won": 3,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "FIFA World Cup",
              "league_id": "16",
              "league_slug": "world-championship",
              "league_country": "World",
              "season_id": "58210",
              "season_name": "World Cup 2026",
              "season_year": "2026"
            },
            {
              "match_id": 16073313,
              "match_date": "2026-05-24",
              "home_team": "SK Slavia Praha",
              "away_team": "FC Viktoria Plzeň",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "FC Viktoria Plzeň",
              "opponent": "SK Slavia Praha",
              "stats": {
                "minutes": 87,
                "rating": 6.4,
                "expected_goals": 0.0546,
                "expected_assists": 0.2215,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 32,
                "accurate_pass": 27,
                "key_pass": 1,
                "duels_won": 2,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Czech First League",
              "league_id": "172",
              "league_slug": "1-liga",
              "league_country": "Czech Republic",
              "season_id": "77019",
              "season_name": "Chance Liga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 16073311,
              "match_date": "2026-05-17",
              "home_team": "FC Viktoria Plzeň",
              "away_team": "FK Jablonec",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "FC Viktoria Plzeň",
              "opponent": "FK Jablonec",
              "stats": {
                "minutes": 75,
                "rating": 8.0,
                "expected_goals": 0.1695,
                "expected_assists": 0.1544,
                "total_shots": 2,
                "shots_on_target": 1,
                "total_pass": 39,
                "accurate_pass": 34,
                "key_pass": 2,
                "tackles": 2,
                "clearances": 1,
                "duels_won": 4,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "Czech First League",
              "league_id": "172",
              "league_slug": "1-liga",
              "league_country": "Czech Republic",
              "season_id": "77019",
              "season_name": "Chance Liga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 16073302,
              "match_date": "2026-05-12",
              "home_team": "AC Sparta Praha",
              "away_team": "FC Viktoria Plzeň",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "FC Viktoria Plzeň",
              "opponent": "AC Sparta Praha",
              "stats": {
                "minutes": 77,
                "rating": 6.8,
                "expected_goals": 0.1222,
                "expected_assists": 0.138,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 32,
                "accurate_pass": 30,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Czech First League",
              "league_id": "172",
              "league_slug": "1-liga",
              "league_country": "Czech Republic",
              "season_id": "77019",
              "season_name": "Chance Liga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 16073306,
              "match_date": "2026-05-09",
              "home_team": "FC Viktoria Plzeň",
              "away_team": "FC Slovan Liberec",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "FC Viktoria Plzeň",
              "opponent": "FC Slovan Liberec",
              "stats": {
                "minutes": 90,
                "rating": 8.0,
                "expected_goals": 0.1872,
                "expected_assists": 0.0229,
                "total_shots": 4,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 38,
                "accurate_pass": 29,
                "key_pass": 1,
                "tackles": 3,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 1,
                "duels_won": 5,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Czech First League",
              "league_id": "172",
              "league_slug": "1-liga",
              "league_country": "Czech Republic",
              "season_id": "77019",
              "season_name": "Chance Liga 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 1777,
            "combined_rank_score": 323.0,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 378.0,
            "fifa_overall": 82.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 16,
            "squad_role": "starter",
            "projected_match_rating": 6.7009,
            "source_file": "data/player_rankings.csv",
            "player_name": "Alexandr Sojka",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Kadir Barría",
                  "ranking": 1772
                },
                {
                  "player_name": "Bryan Colula",
                  "ranking": 1773
                },
                {
                  "player_name": "Gustavo Caballero",
                  "ranking": 1774
                },
                {
                  "player_name": "Fabinho",
                  "ranking": 1775
                },
                {
                  "player_name": "Dimitris Goutas",
                  "ranking": 1776
                }
              ],
              "lower": [
                {
                  "player_name": "Jehad Thakri",
                  "ranking": 1778
                },
                {
                  "player_name": "Matěj Mikulenka",
                  "ranking": 1779
                },
                {
                  "player_name": "Juan Fernando Alfaro",
                  "ranking": 1780
                },
                {
                  "player_name": "Tatsuya Ito",
                  "ranking": 1781
                },
                {
                  "player_name": "Tokmac Chol Nguen",
                  "ranking": 1782
                }
              ]
            }
          }
        },
        "Tomáš Souček": {
          "player_id": 799041,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 22,
          "height": 192,
          "market_value": 9700000,
          "stats": {
            "key_pass": 0,
            "expected_assists": 0.0113,
            "assists": 0,
            "expected_goals": 0.2363,
            "rating": 84.682,
            "minutes": 87,
            "total_pass": 35,
            "accurate_pass": 26,
            "ball_recovery": 3,
            "duels_won": 3,
            "total_shots": 2,
            "total_long_balls": 3,
            "accurate_long_balls": 2,
            "total_own_half_passes": 18,
            "accurate_own_half_passes": 15,
            "total_opp_half_passes": 20,
            "accurate_opp_half_passes": 14,
            "crosses_total": 1,
            "crosses_accurate": 1,
            "touches": 49,
            "possession_lost": 9.2522,
            "dispossessed": 1.0057,
            "duels_lost": 3,
            "aerial_won": 1,
            "aerial_lost": 2,
            "interceptions": 1,
            "tackles_won": 1,
            "tackles": 2,
            "clearances": 1,
            "total_contest": 1,
            "won_contest": 1,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 1,
            "goal_rate": 1.0057,
            "goals": 0,
            "shots_on_target": 2,
            "shots_off_target": 1,
            "blocks": 2,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 1.1766,
            "ball_carries": 9,
            "total_progression": 14,
            "progressive_carries": 0,
            "dribbles_attempted": 2,
            "dribbles_successful": 1.0,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.552,
            "pressing_faced": "LOW",
            "matchup_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
            "numerical_situation": "1v1",
            "opponent_defenders": "Thalente Mbatha",
            "opponent_faced": "Thalente Mbatha",
            "antagonist_source": "attacking_duel, defensive_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.1906,
            "projected_assists": 0,
            "assist_probability": 0.0431,
            "fifa_overall": 78.0
          },
          "latest_10_games": [
            {
              "match_id": 15186720,
              "match_date": "2026-06-12",
              "home_team": "South Korea",
              "away_team": "Czechia",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Czechia",
              "opponent": "South Korea",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assists": 0,
                "expected_goals": 0.2786,
                "expected_assists": 0.0096,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 34,
                "accurate_pass": 25,
                "interceptions": 1,
                "clearances": 1,
                "aerial_won": 2,
                "duels_won": 2,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "FIFA World Cup",
              "league_id": "16",
              "league_slug": "world-championship",
              "league_country": "World",
              "season_id": "58210",
              "season_name": "World Cup 2026",
              "season_year": "2026"
            },
            {
              "match_id": 14023968,
              "match_date": "2026-05-24",
              "home_team": "West Ham United",
              "away_team": "Leeds United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "West Ham United",
              "opponent": "Leeds United",
              "stats": {
                "minutes": 90,
                "rating": 7.3,
                "assists": 0,
                "expected_goals": 0.8255,
                "expected_assists": 0.007,
                "total_shots": 3,
                "shots_on_target": 2,
                "shots_off_target": 1,
                "total_pass": 40,
                "accurate_pass": 35,
                "clearances": 3,
                "aerial_won": 2,
                "duels_won": 3,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023957,
              "match_date": "2026-05-17",
              "home_team": "Newcastle United",
              "away_team": "West Ham United",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "West Ham United",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 63,
                "rating": 6.9,
                "assists": 0,
                "expected_assists": 0.0064,
                "total_shots": 0,
                "total_pass": 32,
                "accurate_pass": 27,
                "key_pass": 1,
                "tackles": 4,
                "tackles_won": 1,
                "clearances": 1,
                "duels_won": 6,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023942,
              "match_date": "2026-05-10",
              "home_team": "West Ham United",
              "away_team": "Arsenal",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "West Ham United",
              "opponent": "Arsenal",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assists": 0,
                "expected_assists": 0.0122,
                "total_shots": 0,
                "total_pass": 27,
                "accurate_pass": 19,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 13233684,
              "match_date": "2025-11-17",
              "home_team": "Czechia",
              "away_team": "Gibraltar",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Czechia",
              "opponent": "Gibraltar",
              "stats": {
                "minutes": 68,
                "rating": 8.0,
                "goal_rate": 1.0,
                "goals": 1,
                "assists": 0,
                "total_shots": 2,
                "shots_on_target": 1,
                "total_pass": 54,
                "accurate_pass": 42,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 2,
                "clearances": 2,
                "aerial_won": 4,
                "duels_won": 5,
                "ball_recovery": 7
              },
              "has_player_stats": true,
              "league_name": "World Cup Qual. UEFA",
              "league_id": "11",
              "league_slug": "world-championship-qual-uefa",
              "league_country": "Europe",
              "season_id": "69427",
              "season_name": "World Cup Qualification, UEFA 2026",
              "season_year": "2026"
            }
          ],
          "ranking": {
            "global_player_rank": 14476,
            "combined_rank_score": 641.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 128.0,
            "sofascore_rating": 7.33,
            "sofascore_appearances": 10.0,
            "fifa_rank": 1154.0,
            "fifa_overall": 78.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 7,
            "squad_role": "starter",
            "projected_match_rating": 6.682,
            "source_file": "data/player_rankings.csv",
            "player_name": "Tomáš Souček",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Pape Gueye",
                  "ranking": 14471
                },
                {
                  "player_name": "Melvin Bard",
                  "ranking": 14472
                },
                {
                  "player_name": "Ángel Pérez",
                  "ranking": 14473
                },
                {
                  "player_name": "Ferland Mendy",
                  "ranking": 14474
                },
                {
                  "player_name": "Nathan Tella",
                  "ranking": 14475
                }
              ],
              "lower": [
                {
                  "player_name": "Martin Baturina",
                  "ranking": 14477
                },
                {
                  "player_name": "Jean-Clair Todibo",
                  "ranking": 14478
                },
                {
                  "player_name": "Matías Soulé",
                  "ranking": 14479
                },
                {
                  "player_name": "Emil Audero",
                  "ranking": 14480
                },
                {
                  "player_name": "Beom-su Lee",
                  "ranking": 14481
                }
              ]
            }
          }
        },
        "Vladimír Coufal": {
          "player_id": 138024,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 5,
          "height": 179,
          "market_value": 2400000,
          "stats": {
            "interceptions": 1,
            "tackles": 2,
            "tackles_won": 1,
            "clearances": 2,
            "aerial_won": 1,
            "rating": 79.5382,
            "minutes": 89,
            "total_pass": 34,
            "accurate_pass": 26,
            "duels_won": 3,
            "total_long_balls": 2,
            "accurate_long_balls": 2,
            "total_own_half_passes": 13,
            "accurate_own_half_passes": 13,
            "total_opp_half_passes": 39,
            "accurate_opp_half_passes": 32,
            "crosses_total": 7,
            "crosses_accurate": 2,
            "touches": 84,
            "possession_lost": 16.6809,
            "dispossessed": 1.9625,
            "duels_lost": 3,
            "aerial_lost": 1,
            "total_contest": 3,
            "won_contest": 3,
            "ball_recovery": 4,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 2,
            "blocks": 1,
            "goal_rate": 0.9812,
            "goals": 0,
            "assists": 0,
            "expected_goals": 0.0445,
            "expected_assists": 0.1744,
            "total_shots": 0,
            "shots_on_target": 1,
            "shots_off_target": 0,
            "big_chances_created": 1,
            "xgot": 0.1766,
            "ball_carries": 15,
            "total_progression": 57,
            "progressive_carries": 0,
            "key_pass": 2,
            "opponent_faced": "Lyle Foster",
            "matchup_zone": "Shape fallback",
            "antagonist_source": "formation_fallback",
            "projected_goals": 0,
            "goal_probability": 0.0602,
            "projected_assists": 0,
            "assist_probability": 0.1455,
            "fifa_overall": 73.0
          },
          "latest_10_games": [
            {
              "match_id": 15186720,
              "match_date": "2026-06-12",
              "home_team": "South Korea",
              "away_team": "Czechia",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Czechia",
              "opponent": "South Korea",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "assists": 1,
                "expected_assists": 0.0809,
                "total_shots": 0,
                "total_pass": 26,
                "accurate_pass": 17,
                "key_pass": 1,
                "interceptions": 1,
                "clearances": 3,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "FIFA World Cup",
              "league_id": "16",
              "league_slug": "world-championship",
              "league_country": "World",
              "season_id": "58210",
              "season_name": "World Cup 2026",
              "season_year": "2026"
            },
            {
              "match_id": 14065559,
              "match_date": "2026-05-16",
              "home_team": "Borussia M'gladbach",
              "away_team": "TSG Hoffenheim",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "TSG Hoffenheim",
              "opponent": "Borussia M'gladbach",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "assists": 0,
                "expected_assists": 0.0277,
                "total_shots": 0,
                "total_pass": 31,
                "accurate_pass": 25,
                "tackles": 4,
                "tackles_won": 2,
                "interceptions": 2,
                "clearances": 4,
                "aerial_won": 3,
                "duels_won": 12,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "Bundesliga",
              "league_id": "35",
              "league_slug": "bundesliga",
              "league_country": "Germany",
              "season_id": "77333",
              "season_name": "Bundesliga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14065252,
              "match_date": "2026-05-09",
              "home_team": "TSG Hoffenheim",
              "away_team": "SV Werder Bremen",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "TSG Hoffenheim",
              "opponent": "SV Werder Bremen",
              "stats": {
                "minutes": 90,
                "rating": 8.4,
                "assists": 0,
                "expected_goals": 0.0421,
                "expected_assists": 1.1492,
                "total_shots": 1,
                "total_pass": 77,
                "accurate_pass": 69,
                "key_pass": 5,
                "tackles": 2,
                "aerial_won": 1,
                "duels_won": 7,
                "ball_recovery": 8
              },
              "has_player_stats": true,
              "league_name": "Bundesliga",
              "league_id": "35",
              "league_slug": "bundesliga",
              "league_country": "Germany",
              "season_id": "77333",
              "season_name": "Bundesliga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14065244,
              "match_date": "2026-05-02",
              "home_team": "TSG Hoffenheim",
              "away_team": "VfB Stuttgart",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "TSG Hoffenheim",
              "opponent": "VfB Stuttgart",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "assists": 0,
                "expected_goals": 0.0475,
                "expected_assists": 0.0166,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 23,
                "accurate_pass": 20,
                "key_pass": 1,
                "tackles": 3,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 1,
                "duels_won": 4,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Bundesliga",
              "league_id": "35",
              "league_slug": "bundesliga",
              "league_country": "Germany",
              "season_id": "77333",
              "season_name": "Bundesliga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 13233684,
              "match_date": "2025-11-17",
              "home_team": "Czechia",
              "away_team": "Gibraltar",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Czechia",
              "opponent": "Gibraltar",
              "stats": {
                "minutes": 90,
                "rating": 9.4,
                "goal_rate": 1.0,
                "goals": 1,
                "assists": 1,
                "total_shots": 2,
                "shots_on_target": 2,
                "total_pass": 85,
                "accurate_pass": 77,
                "key_pass": 4,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 1,
                "duels_won": 4,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "World Cup Qual. UEFA",
              "league_id": "11",
              "league_slug": "world-championship-qual-uefa",
              "league_country": "Europe",
              "season_id": "69427",
              "season_name": "World Cup Qualification, UEFA 2026",
              "season_year": "2026"
            }
          ],
          "ranking": {
            "global_player_rank": 17045,
            "combined_rank_score": 1669.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 93.0,
            "sofascore_rating": 7.4556,
            "sofascore_appearances": 9.0,
            "fifa_rank": 3246.0,
            "fifa_overall": 73.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 15,
            "squad_role": "starter",
            "projected_match_rating": 6.5382,
            "source_file": "data/player_rankings.csv",
            "player_name": "Vladimír Coufal",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Antonio Blanco",
                  "ranking": 17040
                },
                {
                  "player_name": "Andreas Schjelderup",
                  "ranking": 17041
                },
                {
                  "player_name": "Julian Gressel",
                  "ranking": 17042
                },
                {
                  "player_name": "Ivan Schranz",
                  "ranking": 17043
                },
                {
                  "player_name": "Kevin Mbabu",
                  "ranking": 17044
                }
              ],
              "lower": [
                {
                  "player_name": "Pablo Torre",
                  "ranking": 17046
                },
                {
                  "player_name": "Tim Skarke",
                  "ranking": 17047
                },
                {
                  "player_name": "Romain Faivre",
                  "ranking": 17048
                },
                {
                  "player_name": "Luciano Vietto",
                  "ranking": 17049
                },
                {
                  "player_name": "Jordan Ayew",
                  "ranking": 17050
                }
              ]
            }
          }
        },
        "Ladislav Krejčí": {
          "player_id": 856250,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 7,
          "height": 191,
          "market_value": 21000000,
          "stats": {
            "interceptions": 0,
            "tackles": 3,
            "tackles_won": 2,
            "clearances": 3,
            "aerial_won": 3,
            "rating": 85.0882,
            "minutes": 89,
            "total_pass": 43,
            "accurate_pass": 29,
            "duels_won": 7,
            "total_long_balls": 8,
            "accurate_long_balls": 2,
            "total_own_half_passes": 16,
            "accurate_own_half_passes": 14,
            "total_opp_half_passes": 21,
            "accurate_opp_half_passes": 10,
            "crosses_total": 2,
            "crosses_accurate": 1,
            "touches": 54,
            "possession_lost": 18.0619,
            "dispossessed": 1.0422,
            "duels_lost": 5,
            "aerial_lost": 2,
            "total_contest": 1,
            "won_contest": 0,
            "ball_recovery": 5,
            "challenges_lost": 1,
            "fouls": 2,
            "fouls_drawn": 1,
            "blocks": 1,
            "goal_rate": 1.0127,
            "goals": 0,
            "assists": 0,
            "expected_goals": 0.2199,
            "expected_assists": 0.0091,
            "total_shots": 1,
            "shots_on_target": 1,
            "shots_off_target": 1,
            "big_chances_created": 1,
            "xgot": 0.6045,
            "ball_carries": 11,
            "total_progression": 36,
            "progressive_carries": 0,
            "key_pass": 1,
            "tackles_in_zone": 2.1,
            "tackles_won_in_zone": 2.2,
            "interceptions_in_zone": 1.0,
            "clearances_in_zone": 0.9,
            "aerial_duels_won": 1.1,
            "defensive_success_rate": 0.731,
            "opponent_faced": "Teboho Mokoena",
            "pressing_zone": "LW vs CB",
            "matchup_zone": "LW vs CB",
            "antagonist_source": "defensive_duel",
            "projected_goals": 0,
            "goal_probability": 0.1053,
            "projected_assists": 0,
            "assist_probability": 0.0559,
            "fifa_overall": 78.0
          },
          "latest_10_games": [
            {
              "match_id": 15186720,
              "match_date": "2026-06-12",
              "home_team": "South Korea",
              "away_team": "Czechia",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Czechia",
              "opponent": "South Korea",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "goal_rate": 1.0,
                "goals": 1,
                "assists": 0,
                "expected_goals": 0.2145,
                "expected_assists": 0.0041,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 45,
                "accurate_pass": 31,
                "tackles": 3,
                "tackles_won": 2,
                "clearances": 3,
                "aerial_won": 3,
                "duels_won": 7,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "FIFA World Cup",
              "league_id": "16",
              "league_slug": "world-championship",
              "league_country": "World",
              "season_id": "58210",
              "season_name": "World Cup 2026",
              "season_year": "2026"
            },
            {
              "match_id": 14023960,
              "match_date": "2026-05-24",
              "home_team": "Burnley",
              "away_team": "Wolverhampton",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Wolverhampton",
              "opponent": "Burnley",
              "stats": {
                "minutes": 66,
                "rating": 6.4,
                "assists": 0,
                "expected_goals": 0.0613,
                "expected_assists": 0.004,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 28,
                "accurate_pass": 19,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 5,
                "aerial_won": 3,
                "duels_won": 4,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14023958,
              "match_date": "2026-05-17",
              "home_team": "Wolverhampton",
              "away_team": "Fulham",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Wolverhampton",
              "opponent": "Fulham",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "assists": 0,
                "expected_assists": 0.0517,
                "total_shots": 0,
                "total_pass": 33,
                "accurate_pass": 18,
                "tackles": 4,
                "tackles_won": 4,
                "clearances": 4,
                "aerial_won": 2,
                "duels_won": 6,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 14157,
            "combined_rank_score": 544.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 58.0,
            "sofascore_rating": 7.6,
            "sofascore_appearances": 9.0,
            "fifa_rank": 1030.0,
            "fifa_overall": 78.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 1,
            "squad_role": "starter",
            "projected_match_rating": 7.0882,
            "source_file": "data/player_rankings.csv",
            "player_name": "Ladislav Krejčí",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Anselmo",
                  "ranking": 14152
                },
                {
                  "player_name": "Felipe Chamorro",
                  "ranking": 14153
                },
                {
                  "player_name": "Seong-jun Min",
                  "ranking": 14154
                },
                {
                  "player_name": "Wataru Endo",
                  "ranking": 14155
                },
                {
                  "player_name": "Isi",
                  "ranking": 14156
                }
              ],
              "lower": [
                {
                  "player_name": "Diego Ulloa",
                  "ranking": 14158
                },
                {
                  "player_name": "Martin Terrier",
                  "ranking": 14159
                },
                {
                  "player_name": "Rodrigo Bentancur",
                  "ranking": 14160
                },
                {
                  "player_name": "Juan Leiva",
                  "ranking": 14161
                },
                {
                  "player_name": "Walter Benítez",
                  "ranking": 14162
                }
              ]
            }
          }
        },
        "Robin Hranáč": {
          "player_id": 957615,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 4,
          "height": 189,
          "market_value": 10900000,
          "stats": {
            "interceptions": 0,
            "tackles": 0,
            "tackles_won": 0,
            "clearances": 1,
            "aerial_won": 2,
            "rating": 77.4002,
            "minutes": 83,
            "total_pass": 37,
            "accurate_pass": 32,
            "duels_won": 2,
            "total_long_balls": 5,
            "accurate_long_balls": 5,
            "total_own_half_passes": 23,
            "accurate_own_half_passes": 22,
            "total_opp_half_passes": 16,
            "accurate_opp_half_passes": 13,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 43,
            "possession_lost": 4.0396,
            "dispossessed": 1.0099,
            "duels_lost": 4,
            "aerial_lost": 1,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 4,
            "challenges_lost": 1,
            "fouls": 4,
            "fouls_drawn": 1,
            "blocks": 1,
            "goal_rate": 1.0099,
            "goals": 0,
            "assists": 0,
            "expected_goals": 0.0,
            "expected_assists": 0.0048,
            "total_shots": 0,
            "shots_on_target": 1,
            "shots_off_target": 1,
            "big_chances_created": 0,
            "xgot": 0.0,
            "ball_carries": 6,
            "total_progression": 0,
            "progressive_carries": 0,
            "key_pass": 0,
            "tackles_in_zone": 1.0,
            "tackles_won_in_zone": 1.1,
            "interceptions_in_zone": 0.9,
            "clearances_in_zone": 0.7,
            "aerial_duels_won": 0.7,
            "defensive_success_rate": 0.82,
            "opponent_faced": "Lyle Foster",
            "pressing_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
            "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
            "antagonist_source": "defensive_duel",
            "projected_goals": 0,
            "goal_probability": 0.0667,
            "projected_assists": 0,
            "assist_probability": 0.012,
            "fifa_overall": 71.0
          },
          "latest_10_games": [
            {
              "match_id": 15186720,
              "match_date": "2026-06-12",
              "home_team": "South Korea",
              "away_team": "Czechia",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Czechia",
              "opponent": "South Korea",
              "stats": {
                "minutes": 90,
                "rating": 6.3,
                "assists": 0,
                "expected_assists": 0.0026,
                "total_shots": 0,
                "total_pass": 36,
                "accurate_pass": 30,
                "clearances": 1,
                "aerial_won": 2,
                "duels_won": 2,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "FIFA World Cup",
              "league_id": "16",
              "league_slug": "world-championship",
              "league_country": "World",
              "season_id": "58210",
              "season_name": "World Cup 2026",
              "season_year": "2026"
            },
            {
              "match_id": 14065252,
              "match_date": "2026-05-09",
              "home_team": "TSG Hoffenheim",
              "away_team": "SV Werder Bremen",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "TSG Hoffenheim",
              "opponent": "SV Werder Bremen",
              "stats": {
                "minutes": 19,
                "rating": 6.9,
                "assists": 0,
                "expected_assists": 0.0084,
                "total_shots": 0,
                "total_pass": 18,
                "accurate_pass": 14,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "duels_won": 1,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Bundesliga",
              "league_id": "35",
              "league_slug": "bundesliga",
              "league_country": "Germany",
              "season_id": "77333",
              "season_name": "Bundesliga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 13233684,
              "match_date": "2025-11-17",
              "home_team": "Czechia",
              "away_team": "Gibraltar",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Czechia",
              "opponent": "Gibraltar",
              "stats": {
                "minutes": 90,
                "rating": 7.7,
                "goal_rate": 1.0,
                "goals": 1,
                "assists": 0,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 61,
                "accurate_pass": 60,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 9
              },
              "has_player_stats": true,
              "league_name": "World Cup Qual. UEFA",
              "league_id": "11",
              "league_slug": "world-championship-qual-uefa",
              "league_country": "Europe",
              "season_id": "69427",
              "season_name": "World Cup Qualification, UEFA 2026",
              "season_year": "2026"
            }
          ],
          "ranking": {
            "global_player_rank": 18296,
            "combined_rank_score": 2670.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 346.0,
            "sofascore_rating": 6.975,
            "sofascore_appearances": 4.0,
            "fifa_rank": 4995.0,
            "fifa_overall": 71.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 5,
            "squad_role": "starter",
            "projected_match_rating": 6.4002,
            "source_file": "data/player_rankings.csv",
            "player_name": "Robin Hranáč",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Sebastian Sebulonsen",
                  "ranking": 18291
                },
                {
                  "player_name": "Ousseynou Niang",
                  "ranking": 18292
                },
                {
                  "player_name": "Duplexe Tchamba",
                  "ranking": 18293
                },
                {
                  "player_name": "Romeo Amane",
                  "ranking": 18294
                },
                {
                  "player_name": "Mustafa Eskihellaç",
                  "ranking": 18295
                }
              ],
              "lower": [
                {
                  "player_name": "Emanuel Coronel",
                  "ranking": 18297
                },
                {
                  "player_name": "Matteo Bianchetti",
                  "ranking": 18298
                },
                {
                  "player_name": "Carlos Garcés",
                  "ranking": 18299
                },
                {
                  "player_name": "Jackson Ragen",
                  "ranking": 18300
                },
                {
                  "player_name": "Anthony Dennis",
                  "ranking": 18301
                }
              ]
            }
          }
        },
        "Tomáš Holeš": {
          "player_id": 151440,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 3,
          "height": 180,
          "market_value": 1000000,
          "stats": {
            "interceptions": 0,
            "tackles": 0,
            "tackles_won": 0,
            "clearances": 3,
            "aerial_won": 3,
            "rating": 82.895,
            "minutes": 87,
            "total_pass": 50,
            "accurate_pass": 41,
            "duels_won": 3,
            "total_long_balls": 12,
            "accurate_long_balls": 7,
            "total_own_half_passes": 27,
            "accurate_own_half_passes": 26,
            "total_opp_half_passes": 23,
            "accurate_opp_half_passes": 15,
            "crosses_total": 2,
            "crosses_accurate": 0,
            "touches": 60,
            "possession_lost": 10.7935,
            "dispossessed": 0.0,
            "duels_lost": 3,
            "aerial_lost": 2,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 3,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 0,
            "blocks": 1,
            "goal_rate": 0.0,
            "goals": 0,
            "assists": 0,
            "expected_goals": 0.7568,
            "expected_assists": 0.0883,
            "total_shots": 1,
            "shots_on_target": 1,
            "shots_off_target": 0,
            "big_chances_created": 0,
            "xgot": 0.8537,
            "ball_carries": 9,
            "total_progression": 12,
            "progressive_carries": 0,
            "key_pass": 1,
            "opponent_faced": "Aubrey Modiba",
            "matchup_zone": "Right Wingback vs Left Back — Overlapping Run",
            "antagonist_source": "attacking_duel",
            "projected_goals": 0,
            "goal_probability": 0.0857,
            "projected_assists": 0,
            "assist_probability": 0.0786,
            "fifa_overall": 76.0
          },
          "latest_10_games": [
            {
              "match_id": 16073308,
              "match_date": "2026-05-13",
              "home_team": "SK Slavia Praha",
              "away_team": "FK Jablonec",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "SK Slavia Praha",
              "opponent": "FK Jablonec",
              "stats": {
                "minutes": 83,
                "rating": 7.1,
                "expected_goals": 0.6815,
                "expected_assists": 0.0852,
                "total_shots": 2,
                "shots_on_target": 1,
                "total_pass": 51,
                "accurate_pass": 42,
                "key_pass": 1,
                "clearances": 3,
                "aerial_won": 3,
                "duels_won": 3,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Czech First League",
              "league_id": "172",
              "league_slug": "1-liga",
              "league_country": "Czech Republic",
              "season_id": "77019",
              "season_name": "Chance Liga 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 16356,
            "combined_rank_score": 1162.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 658.0,
            "sofascore_rating": 6.7,
            "sofascore_appearances": 5.0,
            "fifa_rank": 1666.0,
            "fifa_overall": 76.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 17,
            "squad_role": "starter",
            "projected_match_rating": 6.895,
            "source_file": "data/player_rankings.csv",
            "player_name": "Tomáš Holeš",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Alban Lafont",
                  "ranking": 16351
                },
                {
                  "player_name": "Oleksandr Pikhalyonok",
                  "ranking": 16352
                },
                {
                  "player_name": "Eric Smith",
                  "ranking": 16353
                },
                {
                  "player_name": "Saud Abdulhamid",
                  "ranking": 16354
                },
                {
                  "player_name": "Maximilian Wöber",
                  "ranking": 16355
                }
              ],
              "lower": [
                {
                  "player_name": "Philip Zinckernagel",
                  "ranking": 16357
                },
                {
                  "player_name": "Antonín Kinský",
                  "ranking": 16358
                },
                {
                  "player_name": "Hwang Hee-chan",
                  "ranking": 16359
                },
                {
                  "player_name": "Ali Al Musrati",
                  "ranking": 16360
                },
                {
                  "player_name": "Florian Sotoca",
                  "ranking": 16361
                }
              ]
            }
          }
        },
        "Lukáš Provod": {
          "player_id": 846122,
          "position": "F",
          "position_depth": "F",
          "is_starter": true,
          "shirt_number": 17,
          "height": 189,
          "market_value": 7500000,
          "stats": {
            "expected_goals": 0.0398,
            "goal_rate": 0.0004,
            "goals": 0,
            "shots_on_target": 0,
            "expected_assists": 0.139,
            "key_pass": 1,
            "rating": 85.0633,
            "minutes": 68,
            "total_shots": 1,
            "duels_won": 4,
            "aerial_won": 2,
            "total_pass": 27,
            "accurate_pass": 22,
            "total_long_balls": 3,
            "accurate_long_balls": 4,
            "total_opp_half_passes": 29,
            "accurate_opp_half_passes": 23,
            "crosses_total": 2,
            "crosses_accurate": 1,
            "touches": 54,
            "possession_lost": 10.9758,
            "dispossessed": 0.0,
            "duels_lost": 4,
            "aerial_lost": 3,
            "total_contest": 2,
            "won_contest": 1,
            "ball_recovery": 3,
            "challenges_lost": 2,
            "fouls": 1,
            "fouls_drawn": 1,
            "assists": 0,
            "shots_off_target": 1,
            "interceptions": 1,
            "tackles_won": 2,
            "tackles": 2,
            "clearances": 1,
            "blocks": 0,
            "big_chances_created": 2,
            "big_chances_missed": 0,
            "xgot": 0.1796,
            "offsides": 1,
            "ball_carries": 13,
            "total_progression": 72,
            "progressive_carries": 3,
            "opponent_faced": "Aubrey Modiba, Ime Okon",
            "matchup_zone": "Shape fallback",
            "antagonist_source": "formation_fallback",
            "projected_goals": 0,
            "goal_probability": 0.0496,
            "projected_assists": 0,
            "assist_probability": 0.1771,
            "fifa_overall": 78.0
          },
          "latest_10_games": [
            {
              "match_id": 15186720,
              "match_date": "2026-06-12",
              "home_team": "South Korea",
              "away_team": "Czechia",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Czechia",
              "opponent": "South Korea",
              "stats": {
                "minutes": 64,
                "rating": 6.9,
                "assists": 0,
                "expected_assists": 0.0131,
                "total_shots": 0,
                "total_pass": 22,
                "accurate_pass": 17,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 1,
                "duels_won": 4,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "FIFA World Cup",
              "league_id": "16",
              "league_slug": "world-championship",
              "league_country": "World",
              "season_id": "58210",
              "season_name": "World Cup 2026",
              "season_year": "2026"
            },
            {
              "match_id": 16073308,
              "match_date": "2026-05-13",
              "home_team": "SK Slavia Praha",
              "away_team": "FK Jablonec",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "SK Slavia Praha",
              "opponent": "FK Jablonec",
              "stats": {
                "minutes": 90,
                "rating": 8.3,
                "expected_goals": 0.2886,
                "expected_assists": 0.8686,
                "total_shots": 4,
                "shots_on_target": 2,
                "shots_off_target": 1,
                "total_pass": 57,
                "accurate_pass": 48,
                "key_pass": 3,
                "clearances": 1,
                "aerial_won": 2,
                "duels_won": 4,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "Czech First League",
              "league_id": "172",
              "league_slug": "1-liga",
              "league_country": "Czech Republic",
              "season_id": "77019",
              "season_name": "Chance Liga 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 14630,
            "combined_rank_score": 661.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 343.0,
            "sofascore_rating": 6.9778,
            "sofascore_appearances": 9.0,
            "fifa_rank": 979.0,
            "fifa_overall": 78.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 12,
            "squad_role": "starter",
            "projected_match_rating": 7.0633,
            "source_file": "data/player_rankings.csv",
            "player_name": "Lukáš Provod",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Manfredas Ruzgis",
                  "ranking": 14625
                },
                {
                  "player_name": "Paul Nebel",
                  "ranking": 14626
                },
                {
                  "player_name": "Alejandro Rego Mora",
                  "ranking": 14627
                },
                {
                  "player_name": "Lucas Hernández",
                  "ranking": 14628
                },
                {
                  "player_name": "Alejandro Balde",
                  "ranking": 14629
                }
              ],
              "lower": [
                {
                  "player_name": "José Luis Morales",
                  "ranking": 14631
                },
                {
                  "player_name": "Marcos Senesi",
                  "ranking": 14632
                },
                {
                  "player_name": "Liam Bonetig",
                  "ranking": 14633
                },
                {
                  "player_name": "Tosin Adarabioyo",
                  "ranking": 14634
                },
                {
                  "player_name": "Marco Bizot",
                  "ranking": 14635
                }
              ]
            }
          }
        },
        "Matěj Kovář": {
          "player_id": 927366,
          "position": "G",
          "position_depth": "G",
          "is_starter": true,
          "shirt_number": 1,
          "height": 196,
          "market_value": 8300000,
          "stats": {
            "saves": 4,
            "goals_prevented": 0.1749,
            "rating": 82.0636,
            "minutes": 90,
            "total_pass": 28,
            "accurate_pass": 14,
            "total_long_balls": 15,
            "accurate_long_balls": 10,
            "touches": 40,
            "clearances": 1,
            "ball_recovery": 8,
            "high_claims": 2,
            "punches": 1.0007,
            "aerial_won": 0,
            "sweeper_actions": 2,
            "sweeper_accurate": 2,
            "saves_inside_box": 3,
            "possession_lost": 7.7553,
            "duels_won": 0,
            "duels_lost": 1,
            "total_contest": 0,
            "won_contest": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "total_own_half_passes": 22,
            "accurate_own_half_passes": 20,
            "assists": 0,
            "expected_assists": 0.003,
            "total_shots": 0,
            "expected_saves": 0.72,
            "high_pressure_saves": 0.27,
            "shots_faced": 1.5,
            "opponent_faced": "Relebohile Mofokeng, Oswin Appollis",
            "matchup_zone": "Goalkeeper shot-stopping context",
            "antagonist_source": "formation_fallback",
            "goals": 0,
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "expected_goals": 0.0,
            "fifa_overall": 75.0
          },
          "latest_10_games": [
            {
              "match_id": 15186720,
              "match_date": "2026-06-12",
              "home_team": "South Korea",
              "away_team": "Czechia",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Czechia",
              "opponent": "South Korea",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assists": 0,
                "expected_assists": 0.003,
                "total_shots": 0,
                "total_pass": 26,
                "accurate_pass": 9,
                "clearances": 1,
                "ball_recovery": 9,
                "saves": 4,
                "goals_prevented": 0.0618
              },
              "has_player_stats": true,
              "league_name": "FIFA World Cup",
              "league_id": "16",
              "league_slug": "world-championship",
              "league_country": "World",
              "season_id": "58210",
              "season_name": "World Cup 2026",
              "season_year": "2026"
            },
            {
              "match_id": 14028530,
              "match_date": "2026-05-17",
              "home_team": "PSV Eindhoven",
              "away_team": "FC Twente",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "PSV Eindhoven",
              "opponent": "FC Twente",
              "stats": {
                "minutes": 90,
                "rating": 8.5,
                "assists": 0,
                "expected_assists": 0.0042,
                "total_shots": 0,
                "total_pass": 38,
                "accurate_pass": 35,
                "clearances": 1,
                "ball_recovery": 3,
                "saves": 5,
                "goals_prevented": 0.7452
              },
              "has_player_stats": true,
              "league_name": "VriendenLoterij Eredivisie",
              "league_id": "37",
              "league_slug": "eredivisie",
              "league_country": "Netherlands",
              "season_id": "77012",
              "season_name": "VriendenLoterij Eredivisie 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14028548,
              "match_date": "2026-05-10",
              "home_team": "Go Ahead Eagles",
              "away_team": "PSV Eindhoven",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "PSV Eindhoven",
              "opponent": "Go Ahead Eagles",
              "stats": {
                "minutes": 90,
                "rating": 7.9,
                "assists": 0,
                "expected_assists": 0.002,
                "total_shots": 0,
                "total_pass": 47,
                "accurate_pass": 38,
                "clearances": 1,
                "ball_recovery": 7,
                "saves": 3,
                "goals_prevented": 0.3338
              },
              "has_player_stats": true,
              "league_name": "VriendenLoterij Eredivisie",
              "league_id": "37",
              "league_slug": "eredivisie",
              "league_country": "Netherlands",
              "season_id": "77012",
              "season_name": "VriendenLoterij Eredivisie 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 13233684,
              "match_date": "2025-11-17",
              "home_team": "Czechia",
              "away_team": "Gibraltar",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Czechia",
              "opponent": "Gibraltar",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assists": 0,
                "total_shots": 0,
                "total_pass": 20,
                "accurate_pass": 19,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "World Cup Qual. UEFA",
              "league_id": "11",
              "league_slug": "world-championship-qual-uefa",
              "league_country": "Europe",
              "season_id": "69427",
              "season_name": "World Cup Qualification, UEFA 2026",
              "season_year": "2026"
            }
          ],
          "ranking": {
            "global_player_rank": 16411,
            "combined_rank_score": 1208.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 293.0,
            "sofascore_rating": 7.0333,
            "sofascore_appearances": 9.0,
            "fifa_rank": 2124.0,
            "fifa_overall": 75.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 9,
            "squad_role": "starter",
            "projected_match_rating": 7.0636,
            "source_file": "data/player_rankings.csv",
            "player_name": "Matěj Kovář",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Ortwin De Wolf",
                  "ranking": 16406
                },
                {
                  "player_name": "Ansu Fati",
                  "ranking": 16407
                },
                {
                  "player_name": "Mouctar Diakhaby",
                  "ranking": 16408
                },
                {
                  "player_name": "Tiago Palacios",
                  "ranking": 16409
                },
                {
                  "player_name": "Jarne Steuckers",
                  "ranking": 16410
                }
              ],
              "lower": [
                {
                  "player_name": "Martin Jedlička",
                  "ranking": 16412
                },
                {
                  "player_name": "Bradley Locko",
                  "ranking": 16413
                },
                {
                  "player_name": "David López",
                  "ranking": 16414
                },
                {
                  "player_name": "Moritz Nicolas",
                  "ranking": 16415
                },
                {
                  "player_name": "Sebastián Rodríguez",
                  "ranking": 16416
                }
              ]
            }
          }
        }
      },
      "bench_players": {
        "Lukáš Horníček": {
          "player_id": 963744,
          "position": "G",
          "position_depth": "G_BENCH",
          "is_starter": false,
          "shirt_number": 1,
          "height": 194,
          "market_value": 14100000,
          "stats": {
            "saves": 0,
            "goals_prevented": 0.0195,
            "rating": 79.0183,
            "minutes": 5,
            "total_pass": 2,
            "accurate_pass": 1,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "touches": 2,
            "clearances": 0,
            "ball_recovery": 0,
            "high_claims": 0,
            "punches": 0.1115,
            "aerial_won": 0,
            "sweeper_actions": 0,
            "sweeper_accurate": 0,
            "saves_inside_box": 0,
            "possession_lost": 0.8222,
            "duels_won": 0,
            "duels_lost": 0,
            "total_contest": 0,
            "won_contest": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "total_own_half_passes": 1,
            "accurate_own_half_passes": 1,
            "total_shots": 0,
            "bench_appearance_probability": 0.132,
            "bench_expected_minutes": 4.91,
            "goals": 0,
            "projected_goals": 0,
            "goal_probability": 0.0,
            "assists": 0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "expected_goals": 0.0,
            "expected_assists": 0.0,
            "fifa_overall": 72.0
          },
          "latest_10_games": [
            {
              "match_id": 14336204,
              "match_date": "2026-05-16",
              "home_team": "Sporting Braga",
              "away_team": "CF Estrela Amadora",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sporting Braga",
              "opponent": "CF Estrela Amadora",
              "stats": {
                "minutes": 80,
                "rating": 6.5,
                "assists": 0,
                "expected_assists": 0.0004,
                "total_shots": 0,
                "total_pass": 12,
                "accurate_pass": 12,
                "ball_recovery": 3,
                "saves": 1,
                "goals_prevented": -0.425
              },
              "has_player_stats": true,
              "league_name": "Liga Portugal Betclic",
              "league_id": "238",
              "league_slug": "liga-portugal-betclic",
              "league_country": "Portugal",
              "season_id": "77806",
              "season_name": "Liga Portugal 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14288898,
              "match_date": "2026-05-11",
              "home_team": "Benfica",
              "away_team": "Sporting Braga",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sporting Braga",
              "opponent": "Benfica",
              "stats": {
                "minutes": 90,
                "rating": 7.7,
                "assists": 0,
                "expected_assists": 0.001,
                "total_shots": 0,
                "total_pass": 34,
                "accurate_pass": 14,
                "clearances": 3,
                "duels_won": 1,
                "ball_recovery": 8,
                "saves": 6,
                "goals_prevented": 0.8406
              },
              "has_player_stats": true,
              "league_name": "Liga Portugal Betclic",
              "league_id": "238",
              "league_slug": "liga-portugal-betclic",
              "league_country": "Portugal",
              "season_id": "77806",
              "season_name": "Liga Portugal 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 15632624,
              "match_date": "2026-05-07",
              "home_team": "SC Freiburg",
              "away_team": "Sporting Braga",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sporting Braga",
              "opponent": "SC Freiburg",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assists": 0,
                "expected_assists": 0.0019,
                "total_shots": 0,
                "total_pass": 36,
                "accurate_pass": 13,
                "clearances": 4,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 7,
                "saves": 5,
                "goals_prevented": -0.2291
              },
              "has_player_stats": true,
              "league_name": "UEFA Europa League",
              "league_id": "679",
              "league_slug": "uefa-europa-league",
              "league_country": "Europe",
              "season_id": "76984",
              "season_name": "UEFA Europa League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14288888,
              "match_date": "2026-05-03",
              "home_team": "Sporting Braga",
              "away_team": "Estoril Praia",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sporting Braga",
              "opponent": "Estoril Praia",
              "stats": {
                "minutes": 90,
                "rating": 7.5,
                "assists": 0,
                "expected_assists": 0.0021,
                "total_shots": 0,
                "total_pass": 33,
                "accurate_pass": 16,
                "ball_recovery": 10,
                "saves": 3,
                "goals_prevented": 1.0653
              },
              "has_player_stats": true,
              "league_name": "Liga Portugal Betclic",
              "league_id": "238",
              "league_slug": "liga-portugal-betclic",
              "league_country": "Portugal",
              "season_id": "77806",
              "season_name": "Liga Portugal 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 15632622,
              "match_date": "2026-04-30",
              "home_team": "Sporting Braga",
              "away_team": "SC Freiburg",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sporting Braga",
              "opponent": "SC Freiburg",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assists": 0,
                "expected_assists": 0.007,
                "total_shots": 0,
                "total_pass": 34,
                "accurate_pass": 26,
                "ball_recovery": 4,
                "saves": 1,
                "goals_prevented": 0.0622
              },
              "has_player_stats": true,
              "league_name": "UEFA Europa League",
              "league_id": "679",
              "league_slug": "uefa-europa-league",
              "league_country": "Europe",
              "season_id": "76984",
              "season_name": "UEFA Europa League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 15632618,
              "match_date": "2026-04-16",
              "home_team": "Real Betis",
              "away_team": "Sporting Braga",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sporting Braga",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "assists": 0,
                "expected_assists": 0.0097,
                "total_shots": 0,
                "total_pass": 25,
                "accurate_pass": 12,
                "clearances": 1,
                "ball_recovery": 6,
                "saves": 3,
                "goals_prevented": 0.0547
              },
              "has_player_stats": true,
              "league_name": "UEFA Europa League",
              "league_id": "679",
              "league_slug": "uefa-europa-league",
              "league_country": "Europe",
              "season_id": "76984",
              "season_name": "UEFA Europa League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 15632614,
              "match_date": "2026-04-08",
              "home_team": "Sporting Braga",
              "away_team": "Real Betis",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sporting Braga",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 90,
                "rating": 7.3,
                "assists": 0,
                "expected_assists": 0.0099,
                "total_shots": 0,
                "total_pass": 40,
                "accurate_pass": 29,
                "ball_recovery": 10,
                "saves": 5,
                "goals_prevented": 0.3682
              },
              "has_player_stats": true,
              "league_name": "UEFA Europa League",
              "league_id": "679",
              "league_slug": "uefa-europa-league",
              "league_country": "Europe",
              "season_id": "76984",
              "season_name": "UEFA Europa League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 15631839,
              "match_date": "2026-03-18",
              "home_team": "Sporting Braga",
              "away_team": "Ferencváros TC",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sporting Braga",
              "opponent": "Ferencváros TC",
              "stats": {
                "minutes": 90,
                "rating": 8.1,
                "assists": 0,
                "expected_assists": 0.0036,
                "total_shots": 0,
                "total_pass": 37,
                "accurate_pass": 22,
                "clearances": 2,
                "aerial_won": 2,
                "duels_won": 2,
                "ball_recovery": 7,
                "saves": 3,
                "goals_prevented": 0.7351
              },
              "has_player_stats": true,
              "league_name": "UEFA Europa League",
              "league_id": "679",
              "league_slug": "uefa-europa-league",
              "league_country": "Europe",
              "season_id": "76984",
              "season_name": "UEFA Europa League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 15631830,
              "match_date": "2026-03-12",
              "home_team": "Ferencváros TC",
              "away_team": "Sporting Braga",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sporting Braga",
              "opponent": "Ferencváros TC",
              "stats": {
                "minutes": 90,
                "rating": 5.9,
                "assists": 0,
                "expected_assists": 0.0001,
                "total_shots": 0,
                "total_pass": 43,
                "accurate_pass": 33,
                "clearances": 1,
                "ball_recovery": 9,
                "saves": 1,
                "goals_prevented": -0.8308
              },
              "has_player_stats": true,
              "league_name": "UEFA Europa League",
              "league_id": "679",
              "league_slug": "uefa-europa-league",
              "league_country": "Europe",
              "season_id": "76984",
              "season_name": "UEFA Europa League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 17572,
            "combined_rank_score": 2096.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 4056.0,
            "fifa_overall": 72.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 4,
            "squad_role": "substitute",
            "projected_match_rating": 7.0183,
            "source_file": "data/player_rankings.csv",
            "player_name": "Lukáš Horníček",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Thierno Ballo",
                  "ranking": 17567
                },
                {
                  "player_name": "Ezequiel Piovi",
                  "ranking": 17568
                },
                {
                  "player_name": "Darlin Yongwa",
                  "ranking": 17569
                },
                {
                  "player_name": "Jordan Morris",
                  "ranking": 17570
                },
                {
                  "player_name": "Nicolás Figal",
                  "ranking": 17571
                }
              ],
              "lower": [
                {
                  "player_name": "Nawaf Al-Aqidi",
                  "ranking": 17573
                },
                {
                  "player_name": "Victor Kristiansen",
                  "ranking": 17574
                },
                {
                  "player_name": "Lucas Cepeda",
                  "ranking": 17575
                },
                {
                  "player_name": "Jeremy Toljan",
                  "ranking": 17576
                },
                {
                  "player_name": "Karim Konaté",
                  "ranking": 17577
                }
              ]
            }
          }
        },
        "Štěpán Chaloupek": {
          "player_id": 1144329,
          "position": "D",
          "position_depth": "D_BENCH",
          "is_starter": false,
          "shirt_number": 2,
          "height": 190,
          "market_value": 7800000,
          "stats": {
            "interceptions": 0,
            "tackles": 0,
            "tackles_won": 0,
            "clearances": 0,
            "aerial_won": 0,
            "rating": 76.0607,
            "minutes": 14,
            "total_pass": 5,
            "accurate_pass": 4,
            "duels_won": 0,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "total_own_half_passes": 4,
            "accurate_own_half_passes": 4,
            "total_opp_half_passes": 3,
            "accurate_opp_half_passes": 2,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 8,
            "possession_lost": 1.1645,
            "dispossessed": 1.4983,
            "duels_lost": 1,
            "aerial_lost": 3,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 1,
            "challenges_lost": 1,
            "fouls": 0,
            "fouls_drawn": 0,
            "blocks": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "assists": 0,
            "expected_goals": 0.0626,
            "expected_assists": 0.0009,
            "total_shots": 0,
            "shots_on_target": 0,
            "shots_off_target": 0,
            "big_chances_created": 0,
            "xgot": 0.1517,
            "ball_carries": 3,
            "total_progression": 8,
            "progressive_carries": 0,
            "key_pass": 0,
            "bench_appearance_probability": 0.309,
            "bench_expected_minutes": 13.81,
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 70.0
          },
          "latest_10_games": [
            {
              "match_id": 15186720,
              "match_date": "2026-06-12",
              "home_team": "South Korea",
              "away_team": "Czechia",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Czechia",
              "opponent": "South Korea",
              "stats": {
                "minutes": 90,
                "rating": 5.9,
                "assists": 0,
                "expected_assists": 0.0042,
                "total_shots": 0,
                "total_pass": 29,
                "accurate_pass": 18,
                "tackles": 1,
                "interceptions": 1,
                "clearances": 3,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "FIFA World Cup",
              "league_id": "16",
              "league_slug": "world-championship",
              "league_country": "World",
              "season_id": "58210",
              "season_name": "World Cup 2026",
              "season_year": "2026"
            },
            {
              "match_id": 16073313,
              "match_date": "2026-05-24",
              "home_team": "SK Slavia Praha",
              "away_team": "FC Viktoria Plzeň",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "SK Slavia Praha",
              "opponent": "FC Viktoria Plzeň",
              "stats": {
                "minutes": 90,
                "rating": 7.6,
                "expected_goals": 0.0847,
                "expected_assists": 0.0027,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 37,
                "accurate_pass": 30,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 2,
                "clearances": 3,
                "duels_won": 3,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "Czech First League",
              "league_id": "172",
              "league_slug": "1-liga",
              "league_country": "Czech Republic",
              "season_id": "77019",
              "season_name": "Chance Liga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 16073310,
              "match_date": "2026-05-17",
              "home_team": "FC Hradec Králové",
              "away_team": "SK Slavia Praha",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "SK Slavia Praha",
              "opponent": "FC Hradec Králové",
              "stats": {
                "minutes": 83,
                "rating": 5.4,
                "expected_goals": 0.0288,
                "expected_assists": 0.031,
                "total_shots": 1,
                "total_pass": 74,
                "accurate_pass": 70,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 5,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Czech First League",
              "league_id": "172",
              "league_slug": "1-liga",
              "league_country": "Czech Republic",
              "season_id": "77019",
              "season_name": "Chance Liga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 16073308,
              "match_date": "2026-05-13",
              "home_team": "SK Slavia Praha",
              "away_team": "FK Jablonec",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "SK Slavia Praha",
              "opponent": "FK Jablonec",
              "stats": {
                "minutes": 90,
                "rating": 8.4,
                "expected_goals": 0.9724,
                "expected_assists": 0.0145,
                "total_shots": 3,
                "shots_on_target": 2,
                "total_pass": 45,
                "accurate_pass": 40,
                "key_pass": 1,
                "tackles": 3,
                "tackles_won": 2,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 6,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "Czech First League",
              "league_id": "172",
              "league_slug": "1-liga",
              "league_country": "Czech Republic",
              "season_id": "77019",
              "season_name": "Chance Liga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 13233684,
              "match_date": "2025-11-17",
              "home_team": "Czechia",
              "away_team": "Gibraltar",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Czechia",
              "opponent": "Gibraltar",
              "stats": {
                "minutes": 22,
                "rating": 6.8,
                "assists": 0,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 25,
                "accurate_pass": 24,
                "interceptions": 1,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "World Cup Qual. UEFA",
              "league_id": "11",
              "league_slug": "world-championship-qual-uefa",
              "league_country": "Europe",
              "season_id": "69427",
              "season_name": "World Cup Qualification, UEFA 2026",
              "season_year": "2026"
            }
          ],
          "ranking": {
            "global_player_rank": 18815,
            "combined_rank_score": 3068.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 239.0,
            "sofascore_rating": 7.1,
            "sofascore_appearances": 3.0,
            "fifa_rank": 5898.0,
            "fifa_overall": 70.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 10,
            "squad_role": "substitute",
            "projected_match_rating": 6.0607,
            "source_file": "data/player_rankings.csv",
            "player_name": "Štěpán Chaloupek",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Nikolas Sattlberger",
                  "ranking": 18810
                },
                {
                  "player_name": "Federico Bonazzoli",
                  "ranking": 18811
                },
                {
                  "player_name": "Berat Özdemir",
                  "ranking": 18812
                },
                {
                  "player_name": "Ashley Barnes",
                  "ranking": 18813
                },
                {
                  "player_name": "Tarik Muharemović",
                  "ranking": 18814
                }
              ],
              "lower": [
                {
                  "player_name": "Lukas Petkov",
                  "ranking": 18816
                },
                {
                  "player_name": "Saîf-Eddine Khaoui",
                  "ranking": 18817
                },
                {
                  "player_name": "Abel Luciatti",
                  "ranking": 18818
                },
                {
                  "player_name": "Chibuike Nwaiwu",
                  "ranking": 18819
                },
                {
                  "player_name": "Jamil Siebert",
                  "ranking": 18820
                }
              ]
            }
          }
        },
        "David Zima": {
          "player_id": 963084,
          "position": "D",
          "position_depth": "D_BENCH",
          "is_starter": false,
          "shirt_number": 4,
          "height": 190,
          "market_value": 6400000,
          "stats": {
            "interceptions": 0,
            "tackles": 0,
            "tackles_won": 0,
            "clearances": 0,
            "aerial_won": 0,
            "duels_won": 1,
            "rating": 80.6584,
            "minutes": 14,
            "total_pass": 6,
            "accurate_pass": 5,
            "total_shots": 0,
            "bench_appearance_probability": 0.306,
            "bench_expected_minutes": 13.74,
            "goals": 0,
            "projected_goals": 0,
            "goal_probability": 0.0,
            "assists": 0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "expected_goals": 0.0,
            "expected_assists": 0.0,
            "fifa_overall": 74.0
          },
          "latest_10_games": [],
          "ranking": {
            "global_player_rank": 16892,
            "combined_rank_score": 1562.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 276.0,
            "sofascore_rating": 7.05,
            "sofascore_appearances": 2.0,
            "fifa_rank": 2848.0,
            "fifa_overall": 74.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 13,
            "squad_role": "substitute",
            "projected_match_rating": 6.6584,
            "source_file": "data/player_rankings.csv",
            "player_name": "David Zima",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Isaac",
                  "ranking": 16887
                },
                {
                  "player_name": "David Okereke",
                  "ranking": 16888
                },
                {
                  "player_name": "Ernest Muçi",
                  "ranking": 16889
                },
                {
                  "player_name": "Hernán Galíndez",
                  "ranking": 16890
                },
                {
                  "player_name": "Mohamed Abdelmonem",
                  "ranking": 16891
                }
              ],
              "lower": [
                {
                  "player_name": "Arthur Chaves",
                  "ranking": 16893
                },
                {
                  "player_name": "Asger Sørensen",
                  "ranking": 16894
                },
                {
                  "player_name": "David Jurásek",
                  "ranking": 16895
                },
                {
                  "player_name": "Samuel Essende",
                  "ranking": 16896
                },
                {
                  "player_name": "Saša Kalajdžić",
                  "ranking": 16897
                }
              ]
            }
          }
        },
        "Michal Sadílek": {
          "player_id": 825731,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 23,
          "height": 168,
          "market_value": 8500000,
          "stats": {
            "key_pass": 0,
            "expected_assists": 0.011,
            "assists": 0,
            "expected_goals": 0.0294,
            "rating": 82.6298,
            "minutes": 22,
            "total_pass": 4,
            "accurate_pass": 3,
            "ball_recovery": 1,
            "duels_won": 1,
            "total_shots": 0,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "total_own_half_passes": 3,
            "accurate_own_half_passes": 3,
            "total_opp_half_passes": 5,
            "accurate_opp_half_passes": 4,
            "crosses_total": 1,
            "crosses_accurate": 1,
            "touches": 10,
            "possession_lost": 1.7816,
            "dispossessed": 1.0014,
            "duels_lost": 0,
            "aerial_won": 1,
            "aerial_lost": 1,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "total_contest": 0,
            "won_contest": 0,
            "challenges_lost": 1,
            "fouls": 0,
            "fouls_drawn": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "shots_on_target": 0,
            "shots_off_target": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.1831,
            "ball_carries": 2,
            "total_progression": 4,
            "progressive_carries": 0,
            "bench_appearance_probability": 0.511,
            "bench_expected_minutes": 22.24,
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 76.0
          },
          "latest_10_games": [
            {
              "match_id": 15186720,
              "match_date": "2026-06-12",
              "home_team": "South Korea",
              "away_team": "Czechia",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Czechia",
              "opponent": "South Korea",
              "stats": {
                "minutes": 26,
                "rating": 6.6,
                "assists": 0,
                "expected_goals": 0.1499,
                "expected_assists": 0.0113,
                "total_shots": 2,
                "shots_on_target": 2,
                "total_pass": 11,
                "accurate_pass": 8
              },
              "has_player_stats": true,
              "league_name": "FIFA World Cup",
              "league_id": "16",
              "league_slug": "world-championship",
              "league_country": "World",
              "season_id": "58210",
              "season_name": "World Cup 2026",
              "season_year": "2026"
            },
            {
              "match_id": 16073313,
              "match_date": "2026-05-24",
              "home_team": "SK Slavia Praha",
              "away_team": "FC Viktoria Plzeň",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "SK Slavia Praha",
              "opponent": "FC Viktoria Plzeň",
              "stats": {
                "minutes": 45,
                "rating": 7.0,
                "expected_assists": 0.0697,
                "total_shots": 0,
                "total_pass": 25,
                "accurate_pass": 21,
                "key_pass": 2,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 1,
                "aerial_won": 2,
                "duels_won": 4,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Czech First League",
              "league_id": "172",
              "league_slug": "1-liga",
              "league_country": "Czech Republic",
              "season_id": "77019",
              "season_name": "Chance Liga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 16073310,
              "match_date": "2026-05-17",
              "home_team": "FC Hradec Králové",
              "away_team": "SK Slavia Praha",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "SK Slavia Praha",
              "opponent": "FC Hradec Králové",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "expected_assists": 0.6002,
                "total_shots": 0,
                "total_pass": 47,
                "accurate_pass": 45,
                "key_pass": 3,
                "interceptions": 1,
                "clearances": 2,
                "aerial_won": 3,
                "duels_won": 4,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "Czech First League",
              "league_id": "172",
              "league_slug": "1-liga",
              "league_country": "Czech Republic",
              "season_id": "77019",
              "season_name": "Chance Liga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 16073308,
              "match_date": "2026-05-13",
              "home_team": "SK Slavia Praha",
              "away_team": "FK Jablonec",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "SK Slavia Praha",
              "opponent": "FK Jablonec",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "expected_assists": 0.0597,
                "total_shots": 0,
                "total_pass": 41,
                "accurate_pass": 39,
                "key_pass": 3,
                "tackles": 2,
                "clearances": 1,
                "duels_won": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Czech First League",
              "league_id": "172",
              "league_slug": "1-liga",
              "league_country": "Czech Republic",
              "season_id": "77019",
              "season_name": "Chance Liga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 13233684,
              "match_date": "2025-11-17",
              "home_team": "Czechia",
              "away_team": "Gibraltar",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Czechia",
              "opponent": "Gibraltar",
              "stats": {
                "minutes": 22,
                "rating": 6.8,
                "assists": 0,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 29,
                "accurate_pass": 27,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 1,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "World Cup Qual. UEFA",
              "league_id": "11",
              "league_slug": "world-championship-qual-uefa",
              "league_country": "Europe",
              "season_id": "69427",
              "season_name": "World Cup Qualification, UEFA 2026",
              "season_year": "2026"
            }
          ],
          "ranking": {
            "global_player_rank": 16371,
            "combined_rank_score": 1178.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 578.0,
            "sofascore_rating": 6.7714,
            "sofascore_appearances": 7.0,
            "fifa_rank": 1778.0,
            "fifa_overall": 76.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 8,
            "squad_role": "substitute",
            "projected_match_rating": 6.6298,
            "source_file": "data/player_rankings.csv",
            "player_name": "Michal Sadílek",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Andrew",
                  "ranking": 16366
                },
                {
                  "player_name": "Sebastiano Esposito",
                  "ranking": 16367
                },
                {
                  "player_name": "Batista Mendy",
                  "ranking": 16368
                },
                {
                  "player_name": "Bertrand Traoré",
                  "ranking": 16369
                },
                {
                  "player_name": "Nicolas Fernandez",
                  "ranking": 16370
                }
              ],
              "lower": [
                {
                  "player_name": "Félix Correia",
                  "ranking": 16372
                },
                {
                  "player_name": "Takumi Minamino",
                  "ranking": 16373
                },
                {
                  "player_name": "Amine Harit",
                  "ranking": 16374
                },
                {
                  "player_name": "De Frutos",
                  "ranking": 16375
                },
                {
                  "player_name": "Ulisses Garcia",
                  "ranking": 16376
                }
              ]
            }
          }
        },
        "Adam Karabec": {
          "player_id": 1000175,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 7,
          "height": 186,
          "market_value": 7600000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.011,
            "assists": 0,
            "expected_goals": 0.0096,
            "rating": 77.7929,
            "minutes": 22,
            "total_pass": 10,
            "accurate_pass": 8,
            "ball_recovery": 2,
            "duels_won": 1,
            "total_shots": 0,
            "total_long_balls": 1,
            "accurate_long_balls": 1,
            "total_own_half_passes": 3,
            "accurate_own_half_passes": 3,
            "total_opp_half_passes": 6,
            "accurate_opp_half_passes": 5,
            "crosses_total": 1,
            "crosses_accurate": 1,
            "touches": 14,
            "possession_lost": 3.0771,
            "dispossessed": 0.9982,
            "duels_lost": 1,
            "aerial_won": 0,
            "aerial_lost": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "total_contest": 0,
            "won_contest": 0,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "goal_rate": 0.2462,
            "goals": 0,
            "shots_on_target": 0,
            "shots_off_target": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "ball_carries": 2,
            "total_progression": 16,
            "progressive_carries": 0,
            "bench_appearance_probability": 0.509,
            "bench_expected_minutes": 22.2,
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 71.0
          },
          "latest_10_games": [
            {
              "match_id": 15631835,
              "match_date": "2026-03-12",
              "home_team": "Celta Vigo",
              "away_team": "Olympique Lyonnais",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Olympique Lyonnais",
              "opponent": "Celta Vigo",
              "stats": {
                "minutes": 20,
                "rating": 6.4,
                "assists": 0,
                "expected_assists": 0.0746,
                "total_shots": 0,
                "total_pass": 13,
                "accurate_pass": 12,
                "key_pass": 2,
                "clearances": 1
              },
              "has_player_stats": true,
              "league_name": "UEFA Europa League",
              "league_id": "679",
              "league_slug": "uefa-europa-league",
              "league_country": "Europe",
              "season_id": "76984",
              "season_name": "UEFA Europa League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 13233684,
              "match_date": "2025-11-17",
              "home_team": "Czechia",
              "away_team": "Gibraltar",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Czechia",
              "opponent": "Gibraltar",
              "stats": {
                "minutes": 90,
                "rating": 9.0,
                "goal_rate": 1.0,
                "goals": 1,
                "assists": 0,
                "total_shots": 3,
                "shots_on_target": 2,
                "shots_off_target": 1,
                "total_pass": 66,
                "accurate_pass": 55,
                "key_pass": 4,
                "tackles": 1,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 8
              },
              "has_player_stats": true,
              "league_name": "World Cup Qual. UEFA",
              "league_id": "11",
              "league_slug": "world-championship-qual-uefa",
              "league_country": "Europe",
              "season_id": "69427",
              "season_name": "World Cup Qualification, UEFA 2026",
              "season_year": "2026"
            }
          ],
          "ranking": {
            "global_player_rank": 18007,
            "combined_rank_score": 2445.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 36.0,
            "sofascore_rating": 7.8333,
            "sofascore_appearances": 3.0,
            "fifa_rank": 4855.0,
            "fifa_overall": 71.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 11,
            "squad_role": "substitute",
            "projected_match_rating": 6.7929,
            "source_file": "data/player_rankings.csv",
            "player_name": "Adam Karabec",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Antonio Palumbo",
                  "ranking": 18002
                },
                {
                  "player_name": "Mateusz Wieteska",
                  "ranking": 18003
                },
                {
                  "player_name": "Martijn Kaars",
                  "ranking": 18004
                },
                {
                  "player_name": "Josué Casimir",
                  "ranking": 18005
                },
                {
                  "player_name": "Giannis Kotsiras",
                  "ranking": 18006
                }
              ],
              "lower": [
                {
                  "player_name": "Daniel Bentley",
                  "ranking": 18008
                },
                {
                  "player_name": "Lucas González",
                  "ranking": 18009
                },
                {
                  "player_name": "Frans Krätzig",
                  "ranking": 18010
                },
                {
                  "player_name": "Paolo Guerrero",
                  "ranking": 18011
                },
                {
                  "player_name": "Cameron Devlin",
                  "ranking": 18012
                }
              ]
            }
          }
        },
        "Pavel Šulc": {
          "player_id": 957604,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 10,
          "height": 177,
          "market_value": 21000000,
          "stats": {
            "expected_goals": 0.0016,
            "goal_rate": 0.0001,
            "goals": 0,
            "shots_on_target": 0,
            "expected_assists": 0.0019,
            "key_pass": 0,
            "rating": 83.7736,
            "minutes": 26,
            "total_shots": 0,
            "duels_won": 1,
            "aerial_won": 0,
            "total_pass": 5,
            "accurate_pass": 4,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 5,
            "accurate_opp_half_passes": 4,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 8,
            "possession_lost": 1.8133,
            "dispossessed": 0.0,
            "duels_lost": 1,
            "aerial_lost": 0,
            "total_contest": 1,
            "won_contest": 0,
            "ball_recovery": 2,
            "challenges_lost": 1,
            "fouls": 0,
            "fouls_drawn": 0,
            "assists": 0,
            "shots_off_target": 0,
            "interceptions": 0,
            "tackles_won": 1,
            "tackles": 1,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "offsides": 0,
            "ball_carries": 2,
            "total_progression": 10,
            "progressive_carries": 0,
            "bench_appearance_probability": 0.595,
            "bench_expected_minutes": 26.1,
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 77.0
          },
          "latest_10_games": [
            {
              "match_id": 15186720,
              "match_date": "2026-06-12",
              "home_team": "South Korea",
              "away_team": "Czechia",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Czechia",
              "opponent": "South Korea",
              "stats": {
                "minutes": 64,
                "rating": 6.7,
                "assists": 0,
                "expected_goals": 0.0067,
                "expected_assists": 0.0079,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 18,
                "accurate_pass": 13,
                "tackles": 2,
                "tackles_won": 2,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 5,
                "ball_recovery": 7
              },
              "has_player_stats": true,
              "league_name": "FIFA World Cup",
              "league_id": "16",
              "league_slug": "world-championship",
              "league_country": "World",
              "season_id": "58210",
              "season_name": "World Cup 2026",
              "season_year": "2026"
            },
            {
              "match_id": 14061911,
              "match_date": "2026-05-17",
              "home_team": "Olympique Lyonnais",
              "away_team": "RC Lens",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Olympique Lyonnais",
              "opponent": "RC Lens",
              "stats": {
                "minutes": 90,
                "rating": 5.9,
                "assists": 0,
                "expected_goals": 0.3274,
                "expected_assists": 0.112,
                "total_shots": 2,
                "shots_on_target": 1,
                "total_pass": 32,
                "accurate_pass": 24,
                "key_pass": 3,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Ligue 1",
              "league_id": "34",
              "league_slug": "ligue-1",
              "league_country": "France",
              "season_id": "77356",
              "season_name": "Ligue 1 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14064515,
              "match_date": "2026-05-10",
              "home_team": "Toulouse",
              "away_team": "Olympique Lyonnais",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Olympique Lyonnais",
              "opponent": "Toulouse",
              "stats": {
                "minutes": 23,
                "rating": 6.2,
                "assists": 0,
                "expected_assists": 0.0032,
                "total_shots": 0,
                "total_pass": 6,
                "accurate_pass": 3,
                "aerial_won": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "Ligue 1",
              "league_id": "34",
              "league_slug": "ligue-1",
              "league_country": "France",
              "season_id": "77356",
              "season_name": "Ligue 1 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14167989,
              "match_date": "2026-05-03",
              "home_team": "Olympique Lyonnais",
              "away_team": "Stade Rennais",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Olympique Lyonnais",
              "opponent": "Stade Rennais",
              "stats": {
                "minutes": 20,
                "rating": 6.6,
                "assists": 0,
                "expected_goals": 0.6596,
                "expected_assists": 0.134,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 6,
                "accurate_pass": 6,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 1,
                "duels_won": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Ligue 1",
              "league_id": "34",
              "league_slug": "ligue-1",
              "league_country": "France",
              "season_id": "77356",
              "season_name": "Ligue 1 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 15631844,
              "match_date": "2026-03-19",
              "home_team": "Olympique Lyonnais",
              "away_team": "Celta Vigo",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Olympique Lyonnais",
              "opponent": "Celta Vigo",
              "stats": {
                "minutes": 23,
                "rating": 6.4,
                "assists": 0,
                "expected_assists": 0.0001,
                "total_shots": 0,
                "total_pass": 4,
                "accurate_pass": 4,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "UEFA Europa League",
              "league_id": "679",
              "league_slug": "uefa-europa-league",
              "league_country": "Europe",
              "season_id": "76984",
              "season_name": "UEFA Europa League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 16020,
            "combined_rank_score": 945.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 375.0,
            "sofascore_rating": 6.9444,
            "sofascore_appearances": 9.0,
            "fifa_rank": 1515.0,
            "fifa_overall": 77.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 2,
            "squad_role": "substitute",
            "projected_match_rating": 6.7736,
            "source_file": "data/player_rankings.csv",
            "player_name": "Pavel Šulc",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Mikel Goti",
                  "ranking": 16015
                },
                {
                  "player_name": "Senne Lynen",
                  "ranking": 16016
                },
                {
                  "player_name": "João Moutinho",
                  "ranking": 16017
                },
                {
                  "player_name": "Alejandro Garnacho",
                  "ranking": 16018
                },
                {
                  "player_name": "Salim Mustafoev",
                  "ranking": 16019
                }
              ],
              "lower": [
                {
                  "player_name": "Vadim Pigas",
                  "ranking": 16021
                },
                {
                  "player_name": "Michele Cevoli",
                  "ranking": 16022
                },
                {
                  "player_name": "Hiroki Itō",
                  "ranking": 16023
                },
                {
                  "player_name": "Crysencio Summerville",
                  "ranking": 16024
                },
                {
                  "player_name": "Beñat Prados",
                  "ranking": 16025
                }
              ]
            }
          }
        },
        "Mojmír Chytil": {
          "player_id": 826049,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 13,
          "height": 187,
          "market_value": 4099999,
          "stats": {
            "expected_goals": 0.0607,
            "goal_rate": 0.0001,
            "goals": 0,
            "shots_on_target": 0,
            "expected_assists": 0.0148,
            "key_pass": 0,
            "rating": 80.3974,
            "minutes": 25,
            "total_shots": 0,
            "duels_won": 1,
            "aerial_won": 1,
            "total_pass": 1,
            "accurate_pass": 1,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 1,
            "accurate_opp_half_passes": 1,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 4,
            "possession_lost": 2.1284,
            "dispossessed": 1.3105,
            "duels_lost": 1,
            "aerial_lost": 1,
            "total_contest": 1,
            "won_contest": 0,
            "ball_recovery": 0,
            "challenges_lost": 1,
            "fouls": 0,
            "fouls_drawn": 1,
            "assists": 0,
            "shots_off_target": 1,
            "interceptions": 1,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.2137,
            "offsides": 0,
            "ball_carries": 1,
            "total_progression": 1,
            "progressive_carries": 0,
            "bench_appearance_probability": 0.561,
            "bench_expected_minutes": 25.35,
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 74.0
          },
          "latest_10_games": [
            {
              "match_id": 15186720,
              "match_date": "2026-06-12",
              "home_team": "South Korea",
              "away_team": "Czechia",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Czechia",
              "opponent": "South Korea",
              "stats": {
                "minutes": 13,
                "rating": 6.4,
                "assists": 0,
                "expected_assists": 0.0585,
                "total_shots": 0,
                "total_pass": 2,
                "accurate_pass": 2,
                "key_pass": 1
              },
              "has_player_stats": true,
              "league_name": "FIFA World Cup",
              "league_id": "16",
              "league_slug": "world-championship",
              "league_country": "World",
              "season_id": "58210",
              "season_name": "World Cup 2026",
              "season_year": "2026"
            },
            {
              "match_id": 16073313,
              "match_date": "2026-05-24",
              "home_team": "SK Slavia Praha",
              "away_team": "FC Viktoria Plzeň",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "SK Slavia Praha",
              "opponent": "FC Viktoria Plzeň",
              "stats": {
                "minutes": 90,
                "rating": 7.8,
                "expected_goals": 1.1244,
                "expected_assists": 0.0125,
                "total_shots": 3,
                "shots_on_target": 1,
                "shots_off_target": 2,
                "total_pass": 7,
                "accurate_pass": 5,
                "key_pass": 1,
                "interceptions": 2,
                "aerial_won": 3,
                "duels_won": 5,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Czech First League",
              "league_id": "172",
              "league_slug": "1-liga",
              "league_country": "Czech Republic",
              "season_id": "77019",
              "season_name": "Chance Liga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 16073310,
              "match_date": "2026-05-17",
              "home_team": "FC Hradec Králové",
              "away_team": "SK Slavia Praha",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "SK Slavia Praha",
              "opponent": "FC Hradec Králové",
              "stats": {
                "minutes": 27,
                "rating": 6.3,
                "expected_goals": 0.0774,
                "expected_assists": 0.0047,
                "total_shots": 1,
                "total_pass": 4,
                "accurate_pass": 2
              },
              "has_player_stats": true,
              "league_name": "Czech First League",
              "league_id": "172",
              "league_slug": "1-liga",
              "league_country": "Czech Republic",
              "season_id": "77019",
              "season_name": "Chance Liga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 16073308,
              "match_date": "2026-05-13",
              "home_team": "SK Slavia Praha",
              "away_team": "FK Jablonec",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "SK Slavia Praha",
              "opponent": "FK Jablonec",
              "stats": {
                "minutes": 77,
                "rating": 7.1,
                "expected_goals": 0.5513,
                "expected_assists": 0.1748,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 15,
                "accurate_pass": 9,
                "key_pass": 2,
                "aerial_won": 2,
                "duels_won": 2
              },
              "has_player_stats": true,
              "league_name": "Czech First League",
              "league_id": "172",
              "league_slug": "1-liga",
              "league_country": "Czech Republic",
              "season_id": "77019",
              "season_name": "Chance Liga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 13233684,
              "match_date": "2025-11-17",
              "home_team": "Czechia",
              "away_team": "Gibraltar",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Czechia",
              "opponent": "Gibraltar",
              "stats": {
                "minutes": 2,
                "assists": 0,
                "total_shots": 0
              },
              "has_player_stats": true,
              "league_name": "World Cup Qual. UEFA",
              "league_id": "11",
              "league_slug": "world-championship-qual-uefa",
              "league_country": "Europe",
              "season_id": "69427",
              "season_name": "World Cup Qualification, UEFA 2026",
              "season_year": "2026"
            }
          ],
          "ranking": {
            "global_player_rank": 17320,
            "combined_rank_score": 1892.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 913.0,
            "sofascore_rating": 6.35,
            "sofascore_appearances": 3.0,
            "fifa_rank": 2871.0,
            "fifa_overall": 74.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 14,
            "squad_role": "substitute",
            "projected_match_rating": 6.3974,
            "source_file": "data/player_rankings.csv",
            "player_name": "Mojmír Chytil",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Daniel Cataño",
                  "ranking": 17315
                },
                {
                  "player_name": "Edwuin Cetré",
                  "ranking": 17316
                },
                {
                  "player_name": "Gustavo Velázquez",
                  "ranking": 17317
                },
                {
                  "player_name": "Montassar Talbi",
                  "ranking": 17318
                },
                {
                  "player_name": "Igor",
                  "ranking": 17319
                }
              ],
              "lower": [
                {
                  "player_name": "Michael Keane",
                  "ranking": 17321
                },
                {
                  "player_name": "Yeremay",
                  "ranking": 17322
                },
                {
                  "player_name": "Serge-Philippe Raux-Yao",
                  "ranking": 17323
                },
                {
                  "player_name": "Bamo Meïté",
                  "ranking": 17324
                },
                {
                  "player_name": "Modibo Sagnan",
                  "ranking": 17325
                }
              ]
            }
          }
        }
      },
      "substitutes": {
        "Lukáš Horníček": {
          "player_id": 963744,
          "position": "G",
          "position_depth": "G_BENCH",
          "is_starter": false,
          "shirt_number": 1,
          "height": 194,
          "market_value": 14100000,
          "stats": {
            "saves": 0,
            "goals_prevented": 0.0195,
            "rating": 79.0183,
            "minutes": 5,
            "total_pass": 2,
            "accurate_pass": 1,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "touches": 2,
            "clearances": 0,
            "ball_recovery": 0,
            "high_claims": 0,
            "punches": 0.1115,
            "aerial_won": 0,
            "sweeper_actions": 0,
            "sweeper_accurate": 0,
            "saves_inside_box": 0,
            "possession_lost": 0.8222,
            "duels_won": 0,
            "duels_lost": 0,
            "total_contest": 0,
            "won_contest": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "total_own_half_passes": 1,
            "accurate_own_half_passes": 1,
            "total_shots": 0,
            "bench_appearance_probability": 0.132,
            "bench_expected_minutes": 4.91,
            "goals": 0,
            "projected_goals": 0,
            "goal_probability": 0.0,
            "assists": 0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "expected_goals": 0.0,
            "expected_assists": 0.0,
            "fifa_overall": 72.0
          },
          "latest_10_games": [
            {
              "match_id": 14336204,
              "match_date": "2026-05-16",
              "home_team": "Sporting Braga",
              "away_team": "CF Estrela Amadora",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sporting Braga",
              "opponent": "CF Estrela Amadora",
              "stats": {
                "minutes": 80,
                "rating": 6.5,
                "assists": 0,
                "expected_assists": 0.0004,
                "total_shots": 0,
                "total_pass": 12,
                "accurate_pass": 12,
                "ball_recovery": 3,
                "saves": 1,
                "goals_prevented": -0.425
              },
              "has_player_stats": true,
              "league_name": "Liga Portugal Betclic",
              "league_id": "238",
              "league_slug": "liga-portugal-betclic",
              "league_country": "Portugal",
              "season_id": "77806",
              "season_name": "Liga Portugal 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14288898,
              "match_date": "2026-05-11",
              "home_team": "Benfica",
              "away_team": "Sporting Braga",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sporting Braga",
              "opponent": "Benfica",
              "stats": {
                "minutes": 90,
                "rating": 7.7,
                "assists": 0,
                "expected_assists": 0.001,
                "total_shots": 0,
                "total_pass": 34,
                "accurate_pass": 14,
                "clearances": 3,
                "duels_won": 1,
                "ball_recovery": 8,
                "saves": 6,
                "goals_prevented": 0.8406
              },
              "has_player_stats": true,
              "league_name": "Liga Portugal Betclic",
              "league_id": "238",
              "league_slug": "liga-portugal-betclic",
              "league_country": "Portugal",
              "season_id": "77806",
              "season_name": "Liga Portugal 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 15632624,
              "match_date": "2026-05-07",
              "home_team": "SC Freiburg",
              "away_team": "Sporting Braga",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sporting Braga",
              "opponent": "SC Freiburg",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assists": 0,
                "expected_assists": 0.0019,
                "total_shots": 0,
                "total_pass": 36,
                "accurate_pass": 13,
                "clearances": 4,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 7,
                "saves": 5,
                "goals_prevented": -0.2291
              },
              "has_player_stats": true,
              "league_name": "UEFA Europa League",
              "league_id": "679",
              "league_slug": "uefa-europa-league",
              "league_country": "Europe",
              "season_id": "76984",
              "season_name": "UEFA Europa League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14288888,
              "match_date": "2026-05-03",
              "home_team": "Sporting Braga",
              "away_team": "Estoril Praia",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sporting Braga",
              "opponent": "Estoril Praia",
              "stats": {
                "minutes": 90,
                "rating": 7.5,
                "assists": 0,
                "expected_assists": 0.0021,
                "total_shots": 0,
                "total_pass": 33,
                "accurate_pass": 16,
                "ball_recovery": 10,
                "saves": 3,
                "goals_prevented": 1.0653
              },
              "has_player_stats": true,
              "league_name": "Liga Portugal Betclic",
              "league_id": "238",
              "league_slug": "liga-portugal-betclic",
              "league_country": "Portugal",
              "season_id": "77806",
              "season_name": "Liga Portugal 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 15632622,
              "match_date": "2026-04-30",
              "home_team": "Sporting Braga",
              "away_team": "SC Freiburg",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sporting Braga",
              "opponent": "SC Freiburg",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assists": 0,
                "expected_assists": 0.007,
                "total_shots": 0,
                "total_pass": 34,
                "accurate_pass": 26,
                "ball_recovery": 4,
                "saves": 1,
                "goals_prevented": 0.0622
              },
              "has_player_stats": true,
              "league_name": "UEFA Europa League",
              "league_id": "679",
              "league_slug": "uefa-europa-league",
              "league_country": "Europe",
              "season_id": "76984",
              "season_name": "UEFA Europa League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 15632618,
              "match_date": "2026-04-16",
              "home_team": "Real Betis",
              "away_team": "Sporting Braga",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sporting Braga",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "assists": 0,
                "expected_assists": 0.0097,
                "total_shots": 0,
                "total_pass": 25,
                "accurate_pass": 12,
                "clearances": 1,
                "ball_recovery": 6,
                "saves": 3,
                "goals_prevented": 0.0547
              },
              "has_player_stats": true,
              "league_name": "UEFA Europa League",
              "league_id": "679",
              "league_slug": "uefa-europa-league",
              "league_country": "Europe",
              "season_id": "76984",
              "season_name": "UEFA Europa League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 15632614,
              "match_date": "2026-04-08",
              "home_team": "Sporting Braga",
              "away_team": "Real Betis",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sporting Braga",
              "opponent": "Real Betis",
              "stats": {
                "minutes": 90,
                "rating": 7.3,
                "assists": 0,
                "expected_assists": 0.0099,
                "total_shots": 0,
                "total_pass": 40,
                "accurate_pass": 29,
                "ball_recovery": 10,
                "saves": 5,
                "goals_prevented": 0.3682
              },
              "has_player_stats": true,
              "league_name": "UEFA Europa League",
              "league_id": "679",
              "league_slug": "uefa-europa-league",
              "league_country": "Europe",
              "season_id": "76984",
              "season_name": "UEFA Europa League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 15631839,
              "match_date": "2026-03-18",
              "home_team": "Sporting Braga",
              "away_team": "Ferencváros TC",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Sporting Braga",
              "opponent": "Ferencváros TC",
              "stats": {
                "minutes": 90,
                "rating": 8.1,
                "assists": 0,
                "expected_assists": 0.0036,
                "total_shots": 0,
                "total_pass": 37,
                "accurate_pass": 22,
                "clearances": 2,
                "aerial_won": 2,
                "duels_won": 2,
                "ball_recovery": 7,
                "saves": 3,
                "goals_prevented": 0.7351
              },
              "has_player_stats": true,
              "league_name": "UEFA Europa League",
              "league_id": "679",
              "league_slug": "uefa-europa-league",
              "league_country": "Europe",
              "season_id": "76984",
              "season_name": "UEFA Europa League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 15631830,
              "match_date": "2026-03-12",
              "home_team": "Ferencváros TC",
              "away_team": "Sporting Braga",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Sporting Braga",
              "opponent": "Ferencváros TC",
              "stats": {
                "minutes": 90,
                "rating": 5.9,
                "assists": 0,
                "expected_assists": 0.0001,
                "total_shots": 0,
                "total_pass": 43,
                "accurate_pass": 33,
                "clearances": 1,
                "ball_recovery": 9,
                "saves": 1,
                "goals_prevented": -0.8308
              },
              "has_player_stats": true,
              "league_name": "UEFA Europa League",
              "league_id": "679",
              "league_slug": "uefa-europa-league",
              "league_country": "Europe",
              "season_id": "76984",
              "season_name": "UEFA Europa League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 17572,
            "combined_rank_score": 2096.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 4056.0,
            "fifa_overall": 72.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 4,
            "squad_role": "substitute",
            "projected_match_rating": 7.0183,
            "source_file": "data/player_rankings.csv",
            "player_name": "Lukáš Horníček",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Thierno Ballo",
                  "ranking": 17567
                },
                {
                  "player_name": "Ezequiel Piovi",
                  "ranking": 17568
                },
                {
                  "player_name": "Darlin Yongwa",
                  "ranking": 17569
                },
                {
                  "player_name": "Jordan Morris",
                  "ranking": 17570
                },
                {
                  "player_name": "Nicolás Figal",
                  "ranking": 17571
                }
              ],
              "lower": [
                {
                  "player_name": "Nawaf Al-Aqidi",
                  "ranking": 17573
                },
                {
                  "player_name": "Victor Kristiansen",
                  "ranking": 17574
                },
                {
                  "player_name": "Lucas Cepeda",
                  "ranking": 17575
                },
                {
                  "player_name": "Jeremy Toljan",
                  "ranking": 17576
                },
                {
                  "player_name": "Karim Konaté",
                  "ranking": 17577
                }
              ]
            }
          }
        },
        "Štěpán Chaloupek": {
          "player_id": 1144329,
          "position": "D",
          "position_depth": "D_BENCH",
          "is_starter": false,
          "shirt_number": 2,
          "height": 190,
          "market_value": 7800000,
          "stats": {
            "interceptions": 0,
            "tackles": 0,
            "tackles_won": 0,
            "clearances": 0,
            "aerial_won": 0,
            "rating": 76.0607,
            "minutes": 14,
            "total_pass": 5,
            "accurate_pass": 4,
            "duels_won": 0,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "total_own_half_passes": 4,
            "accurate_own_half_passes": 4,
            "total_opp_half_passes": 3,
            "accurate_opp_half_passes": 2,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 8,
            "possession_lost": 1.1645,
            "dispossessed": 1.4983,
            "duels_lost": 1,
            "aerial_lost": 3,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 1,
            "challenges_lost": 1,
            "fouls": 0,
            "fouls_drawn": 0,
            "blocks": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "assists": 0,
            "expected_goals": 0.0626,
            "expected_assists": 0.0009,
            "total_shots": 0,
            "shots_on_target": 0,
            "shots_off_target": 0,
            "big_chances_created": 0,
            "xgot": 0.1517,
            "ball_carries": 3,
            "total_progression": 8,
            "progressive_carries": 0,
            "key_pass": 0,
            "bench_appearance_probability": 0.309,
            "bench_expected_minutes": 13.81,
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 70.0
          },
          "latest_10_games": [
            {
              "match_id": 15186720,
              "match_date": "2026-06-12",
              "home_team": "South Korea",
              "away_team": "Czechia",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Czechia",
              "opponent": "South Korea",
              "stats": {
                "minutes": 90,
                "rating": 5.9,
                "assists": 0,
                "expected_assists": 0.0042,
                "total_shots": 0,
                "total_pass": 29,
                "accurate_pass": 18,
                "tackles": 1,
                "interceptions": 1,
                "clearances": 3,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "FIFA World Cup",
              "league_id": "16",
              "league_slug": "world-championship",
              "league_country": "World",
              "season_id": "58210",
              "season_name": "World Cup 2026",
              "season_year": "2026"
            },
            {
              "match_id": 16073313,
              "match_date": "2026-05-24",
              "home_team": "SK Slavia Praha",
              "away_team": "FC Viktoria Plzeň",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "SK Slavia Praha",
              "opponent": "FC Viktoria Plzeň",
              "stats": {
                "minutes": 90,
                "rating": 7.6,
                "expected_goals": 0.0847,
                "expected_assists": 0.0027,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 37,
                "accurate_pass": 30,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 2,
                "clearances": 3,
                "duels_won": 3,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "Czech First League",
              "league_id": "172",
              "league_slug": "1-liga",
              "league_country": "Czech Republic",
              "season_id": "77019",
              "season_name": "Chance Liga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 16073310,
              "match_date": "2026-05-17",
              "home_team": "FC Hradec Králové",
              "away_team": "SK Slavia Praha",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "SK Slavia Praha",
              "opponent": "FC Hradec Králové",
              "stats": {
                "minutes": 83,
                "rating": 5.4,
                "expected_goals": 0.0288,
                "expected_assists": 0.031,
                "total_shots": 1,
                "total_pass": 74,
                "accurate_pass": 70,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 5,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Czech First League",
              "league_id": "172",
              "league_slug": "1-liga",
              "league_country": "Czech Republic",
              "season_id": "77019",
              "season_name": "Chance Liga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 16073308,
              "match_date": "2026-05-13",
              "home_team": "SK Slavia Praha",
              "away_team": "FK Jablonec",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "SK Slavia Praha",
              "opponent": "FK Jablonec",
              "stats": {
                "minutes": 90,
                "rating": 8.4,
                "expected_goals": 0.9724,
                "expected_assists": 0.0145,
                "total_shots": 3,
                "shots_on_target": 2,
                "total_pass": 45,
                "accurate_pass": 40,
                "key_pass": 1,
                "tackles": 3,
                "tackles_won": 2,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 6,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "Czech First League",
              "league_id": "172",
              "league_slug": "1-liga",
              "league_country": "Czech Republic",
              "season_id": "77019",
              "season_name": "Chance Liga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 13233684,
              "match_date": "2025-11-17",
              "home_team": "Czechia",
              "away_team": "Gibraltar",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Czechia",
              "opponent": "Gibraltar",
              "stats": {
                "minutes": 22,
                "rating": 6.8,
                "assists": 0,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 25,
                "accurate_pass": 24,
                "interceptions": 1,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "World Cup Qual. UEFA",
              "league_id": "11",
              "league_slug": "world-championship-qual-uefa",
              "league_country": "Europe",
              "season_id": "69427",
              "season_name": "World Cup Qualification, UEFA 2026",
              "season_year": "2026"
            }
          ],
          "ranking": {
            "global_player_rank": 18815,
            "combined_rank_score": 3068.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 239.0,
            "sofascore_rating": 7.1,
            "sofascore_appearances": 3.0,
            "fifa_rank": 5898.0,
            "fifa_overall": 70.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 10,
            "squad_role": "substitute",
            "projected_match_rating": 6.0607,
            "source_file": "data/player_rankings.csv",
            "player_name": "Štěpán Chaloupek",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Nikolas Sattlberger",
                  "ranking": 18810
                },
                {
                  "player_name": "Federico Bonazzoli",
                  "ranking": 18811
                },
                {
                  "player_name": "Berat Özdemir",
                  "ranking": 18812
                },
                {
                  "player_name": "Ashley Barnes",
                  "ranking": 18813
                },
                {
                  "player_name": "Tarik Muharemović",
                  "ranking": 18814
                }
              ],
              "lower": [
                {
                  "player_name": "Lukas Petkov",
                  "ranking": 18816
                },
                {
                  "player_name": "Saîf-Eddine Khaoui",
                  "ranking": 18817
                },
                {
                  "player_name": "Abel Luciatti",
                  "ranking": 18818
                },
                {
                  "player_name": "Chibuike Nwaiwu",
                  "ranking": 18819
                },
                {
                  "player_name": "Jamil Siebert",
                  "ranking": 18820
                }
              ]
            }
          }
        },
        "David Zima": {
          "player_id": 963084,
          "position": "D",
          "position_depth": "D_BENCH",
          "is_starter": false,
          "shirt_number": 4,
          "height": 190,
          "market_value": 6400000,
          "stats": {
            "interceptions": 0,
            "tackles": 0,
            "tackles_won": 0,
            "clearances": 0,
            "aerial_won": 0,
            "duels_won": 1,
            "rating": 80.6584,
            "minutes": 14,
            "total_pass": 6,
            "accurate_pass": 5,
            "total_shots": 0,
            "bench_appearance_probability": 0.306,
            "bench_expected_minutes": 13.74,
            "goals": 0,
            "projected_goals": 0,
            "goal_probability": 0.0,
            "assists": 0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "expected_goals": 0.0,
            "expected_assists": 0.0,
            "fifa_overall": 74.0
          },
          "latest_10_games": [],
          "ranking": {
            "global_player_rank": 16892,
            "combined_rank_score": 1562.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 276.0,
            "sofascore_rating": 7.05,
            "sofascore_appearances": 2.0,
            "fifa_rank": 2848.0,
            "fifa_overall": 74.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 13,
            "squad_role": "substitute",
            "projected_match_rating": 6.6584,
            "source_file": "data/player_rankings.csv",
            "player_name": "David Zima",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Isaac",
                  "ranking": 16887
                },
                {
                  "player_name": "David Okereke",
                  "ranking": 16888
                },
                {
                  "player_name": "Ernest Muçi",
                  "ranking": 16889
                },
                {
                  "player_name": "Hernán Galíndez",
                  "ranking": 16890
                },
                {
                  "player_name": "Mohamed Abdelmonem",
                  "ranking": 16891
                }
              ],
              "lower": [
                {
                  "player_name": "Arthur Chaves",
                  "ranking": 16893
                },
                {
                  "player_name": "Asger Sørensen",
                  "ranking": 16894
                },
                {
                  "player_name": "David Jurásek",
                  "ranking": 16895
                },
                {
                  "player_name": "Samuel Essende",
                  "ranking": 16896
                },
                {
                  "player_name": "Saša Kalajdžić",
                  "ranking": 16897
                }
              ]
            }
          }
        },
        "Michal Sadílek": {
          "player_id": 825731,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 23,
          "height": 168,
          "market_value": 8500000,
          "stats": {
            "key_pass": 0,
            "expected_assists": 0.011,
            "assists": 0,
            "expected_goals": 0.0294,
            "rating": 82.6298,
            "minutes": 22,
            "total_pass": 4,
            "accurate_pass": 3,
            "ball_recovery": 1,
            "duels_won": 1,
            "total_shots": 0,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "total_own_half_passes": 3,
            "accurate_own_half_passes": 3,
            "total_opp_half_passes": 5,
            "accurate_opp_half_passes": 4,
            "crosses_total": 1,
            "crosses_accurate": 1,
            "touches": 10,
            "possession_lost": 1.7816,
            "dispossessed": 1.0014,
            "duels_lost": 0,
            "aerial_won": 1,
            "aerial_lost": 1,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "total_contest": 0,
            "won_contest": 0,
            "challenges_lost": 1,
            "fouls": 0,
            "fouls_drawn": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "shots_on_target": 0,
            "shots_off_target": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.1831,
            "ball_carries": 2,
            "total_progression": 4,
            "progressive_carries": 0,
            "bench_appearance_probability": 0.511,
            "bench_expected_minutes": 22.24,
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 76.0
          },
          "latest_10_games": [
            {
              "match_id": 15186720,
              "match_date": "2026-06-12",
              "home_team": "South Korea",
              "away_team": "Czechia",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Czechia",
              "opponent": "South Korea",
              "stats": {
                "minutes": 26,
                "rating": 6.6,
                "assists": 0,
                "expected_goals": 0.1499,
                "expected_assists": 0.0113,
                "total_shots": 2,
                "shots_on_target": 2,
                "total_pass": 11,
                "accurate_pass": 8
              },
              "has_player_stats": true,
              "league_name": "FIFA World Cup",
              "league_id": "16",
              "league_slug": "world-championship",
              "league_country": "World",
              "season_id": "58210",
              "season_name": "World Cup 2026",
              "season_year": "2026"
            },
            {
              "match_id": 16073313,
              "match_date": "2026-05-24",
              "home_team": "SK Slavia Praha",
              "away_team": "FC Viktoria Plzeň",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "SK Slavia Praha",
              "opponent": "FC Viktoria Plzeň",
              "stats": {
                "minutes": 45,
                "rating": 7.0,
                "expected_assists": 0.0697,
                "total_shots": 0,
                "total_pass": 25,
                "accurate_pass": 21,
                "key_pass": 2,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 1,
                "aerial_won": 2,
                "duels_won": 4,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Czech First League",
              "league_id": "172",
              "league_slug": "1-liga",
              "league_country": "Czech Republic",
              "season_id": "77019",
              "season_name": "Chance Liga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 16073310,
              "match_date": "2026-05-17",
              "home_team": "FC Hradec Králové",
              "away_team": "SK Slavia Praha",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "SK Slavia Praha",
              "opponent": "FC Hradec Králové",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "expected_assists": 0.6002,
                "total_shots": 0,
                "total_pass": 47,
                "accurate_pass": 45,
                "key_pass": 3,
                "interceptions": 1,
                "clearances": 2,
                "aerial_won": 3,
                "duels_won": 4,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "Czech First League",
              "league_id": "172",
              "league_slug": "1-liga",
              "league_country": "Czech Republic",
              "season_id": "77019",
              "season_name": "Chance Liga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 16073308,
              "match_date": "2026-05-13",
              "home_team": "SK Slavia Praha",
              "away_team": "FK Jablonec",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "SK Slavia Praha",
              "opponent": "FK Jablonec",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "expected_assists": 0.0597,
                "total_shots": 0,
                "total_pass": 41,
                "accurate_pass": 39,
                "key_pass": 3,
                "tackles": 2,
                "clearances": 1,
                "duels_won": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Czech First League",
              "league_id": "172",
              "league_slug": "1-liga",
              "league_country": "Czech Republic",
              "season_id": "77019",
              "season_name": "Chance Liga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 13233684,
              "match_date": "2025-11-17",
              "home_team": "Czechia",
              "away_team": "Gibraltar",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Czechia",
              "opponent": "Gibraltar",
              "stats": {
                "minutes": 22,
                "rating": 6.8,
                "assists": 0,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 29,
                "accurate_pass": 27,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 1,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "World Cup Qual. UEFA",
              "league_id": "11",
              "league_slug": "world-championship-qual-uefa",
              "league_country": "Europe",
              "season_id": "69427",
              "season_name": "World Cup Qualification, UEFA 2026",
              "season_year": "2026"
            }
          ],
          "ranking": {
            "global_player_rank": 16371,
            "combined_rank_score": 1178.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 578.0,
            "sofascore_rating": 6.7714,
            "sofascore_appearances": 7.0,
            "fifa_rank": 1778.0,
            "fifa_overall": 76.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 8,
            "squad_role": "substitute",
            "projected_match_rating": 6.6298,
            "source_file": "data/player_rankings.csv",
            "player_name": "Michal Sadílek",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Andrew",
                  "ranking": 16366
                },
                {
                  "player_name": "Sebastiano Esposito",
                  "ranking": 16367
                },
                {
                  "player_name": "Batista Mendy",
                  "ranking": 16368
                },
                {
                  "player_name": "Bertrand Traoré",
                  "ranking": 16369
                },
                {
                  "player_name": "Nicolas Fernandez",
                  "ranking": 16370
                }
              ],
              "lower": [
                {
                  "player_name": "Félix Correia",
                  "ranking": 16372
                },
                {
                  "player_name": "Takumi Minamino",
                  "ranking": 16373
                },
                {
                  "player_name": "Amine Harit",
                  "ranking": 16374
                },
                {
                  "player_name": "De Frutos",
                  "ranking": 16375
                },
                {
                  "player_name": "Ulisses Garcia",
                  "ranking": 16376
                }
              ]
            }
          }
        },
        "Adam Karabec": {
          "player_id": 1000175,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 7,
          "height": 186,
          "market_value": 7600000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.011,
            "assists": 0,
            "expected_goals": 0.0096,
            "rating": 77.7929,
            "minutes": 22,
            "total_pass": 10,
            "accurate_pass": 8,
            "ball_recovery": 2,
            "duels_won": 1,
            "total_shots": 0,
            "total_long_balls": 1,
            "accurate_long_balls": 1,
            "total_own_half_passes": 3,
            "accurate_own_half_passes": 3,
            "total_opp_half_passes": 6,
            "accurate_opp_half_passes": 5,
            "crosses_total": 1,
            "crosses_accurate": 1,
            "touches": 14,
            "possession_lost": 3.0771,
            "dispossessed": 0.9982,
            "duels_lost": 1,
            "aerial_won": 0,
            "aerial_lost": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "total_contest": 0,
            "won_contest": 0,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "goal_rate": 0.2462,
            "goals": 0,
            "shots_on_target": 0,
            "shots_off_target": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "ball_carries": 2,
            "total_progression": 16,
            "progressive_carries": 0,
            "bench_appearance_probability": 0.509,
            "bench_expected_minutes": 22.2,
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 71.0
          },
          "latest_10_games": [
            {
              "match_id": 15631835,
              "match_date": "2026-03-12",
              "home_team": "Celta Vigo",
              "away_team": "Olympique Lyonnais",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Olympique Lyonnais",
              "opponent": "Celta Vigo",
              "stats": {
                "minutes": 20,
                "rating": 6.4,
                "assists": 0,
                "expected_assists": 0.0746,
                "total_shots": 0,
                "total_pass": 13,
                "accurate_pass": 12,
                "key_pass": 2,
                "clearances": 1
              },
              "has_player_stats": true,
              "league_name": "UEFA Europa League",
              "league_id": "679",
              "league_slug": "uefa-europa-league",
              "league_country": "Europe",
              "season_id": "76984",
              "season_name": "UEFA Europa League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 13233684,
              "match_date": "2025-11-17",
              "home_team": "Czechia",
              "away_team": "Gibraltar",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Czechia",
              "opponent": "Gibraltar",
              "stats": {
                "minutes": 90,
                "rating": 9.0,
                "goal_rate": 1.0,
                "goals": 1,
                "assists": 0,
                "total_shots": 3,
                "shots_on_target": 2,
                "shots_off_target": 1,
                "total_pass": 66,
                "accurate_pass": 55,
                "key_pass": 4,
                "tackles": 1,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 8
              },
              "has_player_stats": true,
              "league_name": "World Cup Qual. UEFA",
              "league_id": "11",
              "league_slug": "world-championship-qual-uefa",
              "league_country": "Europe",
              "season_id": "69427",
              "season_name": "World Cup Qualification, UEFA 2026",
              "season_year": "2026"
            }
          ],
          "ranking": {
            "global_player_rank": 18007,
            "combined_rank_score": 2445.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 36.0,
            "sofascore_rating": 7.8333,
            "sofascore_appearances": 3.0,
            "fifa_rank": 4855.0,
            "fifa_overall": 71.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 11,
            "squad_role": "substitute",
            "projected_match_rating": 6.7929,
            "source_file": "data/player_rankings.csv",
            "player_name": "Adam Karabec",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Antonio Palumbo",
                  "ranking": 18002
                },
                {
                  "player_name": "Mateusz Wieteska",
                  "ranking": 18003
                },
                {
                  "player_name": "Martijn Kaars",
                  "ranking": 18004
                },
                {
                  "player_name": "Josué Casimir",
                  "ranking": 18005
                },
                {
                  "player_name": "Giannis Kotsiras",
                  "ranking": 18006
                }
              ],
              "lower": [
                {
                  "player_name": "Daniel Bentley",
                  "ranking": 18008
                },
                {
                  "player_name": "Lucas González",
                  "ranking": 18009
                },
                {
                  "player_name": "Frans Krätzig",
                  "ranking": 18010
                },
                {
                  "player_name": "Paolo Guerrero",
                  "ranking": 18011
                },
                {
                  "player_name": "Cameron Devlin",
                  "ranking": 18012
                }
              ]
            }
          }
        },
        "Pavel Šulc": {
          "player_id": 957604,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 10,
          "height": 177,
          "market_value": 21000000,
          "stats": {
            "expected_goals": 0.0016,
            "goal_rate": 0.0001,
            "goals": 0,
            "shots_on_target": 0,
            "expected_assists": 0.0019,
            "key_pass": 0,
            "rating": 83.7736,
            "minutes": 26,
            "total_shots": 0,
            "duels_won": 1,
            "aerial_won": 0,
            "total_pass": 5,
            "accurate_pass": 4,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 5,
            "accurate_opp_half_passes": 4,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 8,
            "possession_lost": 1.8133,
            "dispossessed": 0.0,
            "duels_lost": 1,
            "aerial_lost": 0,
            "total_contest": 1,
            "won_contest": 0,
            "ball_recovery": 2,
            "challenges_lost": 1,
            "fouls": 0,
            "fouls_drawn": 0,
            "assists": 0,
            "shots_off_target": 0,
            "interceptions": 0,
            "tackles_won": 1,
            "tackles": 1,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "offsides": 0,
            "ball_carries": 2,
            "total_progression": 10,
            "progressive_carries": 0,
            "bench_appearance_probability": 0.595,
            "bench_expected_minutes": 26.1,
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 77.0
          },
          "latest_10_games": [
            {
              "match_id": 15186720,
              "match_date": "2026-06-12",
              "home_team": "South Korea",
              "away_team": "Czechia",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Czechia",
              "opponent": "South Korea",
              "stats": {
                "minutes": 64,
                "rating": 6.7,
                "assists": 0,
                "expected_goals": 0.0067,
                "expected_assists": 0.0079,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 18,
                "accurate_pass": 13,
                "tackles": 2,
                "tackles_won": 2,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 5,
                "ball_recovery": 7
              },
              "has_player_stats": true,
              "league_name": "FIFA World Cup",
              "league_id": "16",
              "league_slug": "world-championship",
              "league_country": "World",
              "season_id": "58210",
              "season_name": "World Cup 2026",
              "season_year": "2026"
            },
            {
              "match_id": 14061911,
              "match_date": "2026-05-17",
              "home_team": "Olympique Lyonnais",
              "away_team": "RC Lens",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Olympique Lyonnais",
              "opponent": "RC Lens",
              "stats": {
                "minutes": 90,
                "rating": 5.9,
                "assists": 0,
                "expected_goals": 0.3274,
                "expected_assists": 0.112,
                "total_shots": 2,
                "shots_on_target": 1,
                "total_pass": 32,
                "accurate_pass": 24,
                "key_pass": 3,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Ligue 1",
              "league_id": "34",
              "league_slug": "ligue-1",
              "league_country": "France",
              "season_id": "77356",
              "season_name": "Ligue 1 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14064515,
              "match_date": "2026-05-10",
              "home_team": "Toulouse",
              "away_team": "Olympique Lyonnais",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Olympique Lyonnais",
              "opponent": "Toulouse",
              "stats": {
                "minutes": 23,
                "rating": 6.2,
                "assists": 0,
                "expected_assists": 0.0032,
                "total_shots": 0,
                "total_pass": 6,
                "accurate_pass": 3,
                "aerial_won": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "Ligue 1",
              "league_id": "34",
              "league_slug": "ligue-1",
              "league_country": "France",
              "season_id": "77356",
              "season_name": "Ligue 1 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14167989,
              "match_date": "2026-05-03",
              "home_team": "Olympique Lyonnais",
              "away_team": "Stade Rennais",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Olympique Lyonnais",
              "opponent": "Stade Rennais",
              "stats": {
                "minutes": 20,
                "rating": 6.6,
                "assists": 0,
                "expected_goals": 0.6596,
                "expected_assists": 0.134,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 6,
                "accurate_pass": 6,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 1,
                "duels_won": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Ligue 1",
              "league_id": "34",
              "league_slug": "ligue-1",
              "league_country": "France",
              "season_id": "77356",
              "season_name": "Ligue 1 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 15631844,
              "match_date": "2026-03-19",
              "home_team": "Olympique Lyonnais",
              "away_team": "Celta Vigo",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Olympique Lyonnais",
              "opponent": "Celta Vigo",
              "stats": {
                "minutes": 23,
                "rating": 6.4,
                "assists": 0,
                "expected_assists": 0.0001,
                "total_shots": 0,
                "total_pass": 4,
                "accurate_pass": 4,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "UEFA Europa League",
              "league_id": "679",
              "league_slug": "uefa-europa-league",
              "league_country": "Europe",
              "season_id": "76984",
              "season_name": "UEFA Europa League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 16020,
            "combined_rank_score": 945.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 375.0,
            "sofascore_rating": 6.9444,
            "sofascore_appearances": 9.0,
            "fifa_rank": 1515.0,
            "fifa_overall": 77.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 2,
            "squad_role": "substitute",
            "projected_match_rating": 6.7736,
            "source_file": "data/player_rankings.csv",
            "player_name": "Pavel Šulc",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Mikel Goti",
                  "ranking": 16015
                },
                {
                  "player_name": "Senne Lynen",
                  "ranking": 16016
                },
                {
                  "player_name": "João Moutinho",
                  "ranking": 16017
                },
                {
                  "player_name": "Alejandro Garnacho",
                  "ranking": 16018
                },
                {
                  "player_name": "Salim Mustafoev",
                  "ranking": 16019
                }
              ],
              "lower": [
                {
                  "player_name": "Vadim Pigas",
                  "ranking": 16021
                },
                {
                  "player_name": "Michele Cevoli",
                  "ranking": 16022
                },
                {
                  "player_name": "Hiroki Itō",
                  "ranking": 16023
                },
                {
                  "player_name": "Crysencio Summerville",
                  "ranking": 16024
                },
                {
                  "player_name": "Beñat Prados",
                  "ranking": 16025
                }
              ]
            }
          }
        },
        "Mojmír Chytil": {
          "player_id": 826049,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 13,
          "height": 187,
          "market_value": 4099999,
          "stats": {
            "expected_goals": 0.0607,
            "goal_rate": 0.0001,
            "goals": 0,
            "shots_on_target": 0,
            "expected_assists": 0.0148,
            "key_pass": 0,
            "rating": 80.3974,
            "minutes": 25,
            "total_shots": 0,
            "duels_won": 1,
            "aerial_won": 1,
            "total_pass": 1,
            "accurate_pass": 1,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 1,
            "accurate_opp_half_passes": 1,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 4,
            "possession_lost": 2.1284,
            "dispossessed": 1.3105,
            "duels_lost": 1,
            "aerial_lost": 1,
            "total_contest": 1,
            "won_contest": 0,
            "ball_recovery": 0,
            "challenges_lost": 1,
            "fouls": 0,
            "fouls_drawn": 1,
            "assists": 0,
            "shots_off_target": 1,
            "interceptions": 1,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.2137,
            "offsides": 0,
            "ball_carries": 1,
            "total_progression": 1,
            "progressive_carries": 0,
            "bench_appearance_probability": 0.561,
            "bench_expected_minutes": 25.35,
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 74.0
          },
          "latest_10_games": [
            {
              "match_id": 15186720,
              "match_date": "2026-06-12",
              "home_team": "South Korea",
              "away_team": "Czechia",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Czechia",
              "opponent": "South Korea",
              "stats": {
                "minutes": 13,
                "rating": 6.4,
                "assists": 0,
                "expected_assists": 0.0585,
                "total_shots": 0,
                "total_pass": 2,
                "accurate_pass": 2,
                "key_pass": 1
              },
              "has_player_stats": true,
              "league_name": "FIFA World Cup",
              "league_id": "16",
              "league_slug": "world-championship",
              "league_country": "World",
              "season_id": "58210",
              "season_name": "World Cup 2026",
              "season_year": "2026"
            },
            {
              "match_id": 16073313,
              "match_date": "2026-05-24",
              "home_team": "SK Slavia Praha",
              "away_team": "FC Viktoria Plzeň",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "SK Slavia Praha",
              "opponent": "FC Viktoria Plzeň",
              "stats": {
                "minutes": 90,
                "rating": 7.8,
                "expected_goals": 1.1244,
                "expected_assists": 0.0125,
                "total_shots": 3,
                "shots_on_target": 1,
                "shots_off_target": 2,
                "total_pass": 7,
                "accurate_pass": 5,
                "key_pass": 1,
                "interceptions": 2,
                "aerial_won": 3,
                "duels_won": 5,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Czech First League",
              "league_id": "172",
              "league_slug": "1-liga",
              "league_country": "Czech Republic",
              "season_id": "77019",
              "season_name": "Chance Liga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 16073310,
              "match_date": "2026-05-17",
              "home_team": "FC Hradec Králové",
              "away_team": "SK Slavia Praha",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "SK Slavia Praha",
              "opponent": "FC Hradec Králové",
              "stats": {
                "minutes": 27,
                "rating": 6.3,
                "expected_goals": 0.0774,
                "expected_assists": 0.0047,
                "total_shots": 1,
                "total_pass": 4,
                "accurate_pass": 2
              },
              "has_player_stats": true,
              "league_name": "Czech First League",
              "league_id": "172",
              "league_slug": "1-liga",
              "league_country": "Czech Republic",
              "season_id": "77019",
              "season_name": "Chance Liga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 16073308,
              "match_date": "2026-05-13",
              "home_team": "SK Slavia Praha",
              "away_team": "FK Jablonec",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "SK Slavia Praha",
              "opponent": "FK Jablonec",
              "stats": {
                "minutes": 77,
                "rating": 7.1,
                "expected_goals": 0.5513,
                "expected_assists": 0.1748,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 15,
                "accurate_pass": 9,
                "key_pass": 2,
                "aerial_won": 2,
                "duels_won": 2
              },
              "has_player_stats": true,
              "league_name": "Czech First League",
              "league_id": "172",
              "league_slug": "1-liga",
              "league_country": "Czech Republic",
              "season_id": "77019",
              "season_name": "Chance Liga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 13233684,
              "match_date": "2025-11-17",
              "home_team": "Czechia",
              "away_team": "Gibraltar",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Czechia",
              "opponent": "Gibraltar",
              "stats": {
                "minutes": 2,
                "assists": 0,
                "total_shots": 0
              },
              "has_player_stats": true,
              "league_name": "World Cup Qual. UEFA",
              "league_id": "11",
              "league_slug": "world-championship-qual-uefa",
              "league_country": "Europe",
              "season_id": "69427",
              "season_name": "World Cup Qualification, UEFA 2026",
              "season_year": "2026"
            }
          ],
          "ranking": {
            "global_player_rank": 17320,
            "combined_rank_score": 1892.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 913.0,
            "sofascore_rating": 6.35,
            "sofascore_appearances": 3.0,
            "fifa_rank": 2871.0,
            "fifa_overall": 74.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 14,
            "squad_role": "substitute",
            "projected_match_rating": 6.3974,
            "source_file": "data/player_rankings.csv",
            "player_name": "Mojmír Chytil",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Daniel Cataño",
                  "ranking": 17315
                },
                {
                  "player_name": "Edwuin Cetré",
                  "ranking": 17316
                },
                {
                  "player_name": "Gustavo Velázquez",
                  "ranking": 17317
                },
                {
                  "player_name": "Montassar Talbi",
                  "ranking": 17318
                },
                {
                  "player_name": "Igor",
                  "ranking": 17319
                }
              ],
              "lower": [
                {
                  "player_name": "Michael Keane",
                  "ranking": 17321
                },
                {
                  "player_name": "Yeremay",
                  "ranking": 17322
                },
                {
                  "player_name": "Serge-Philippe Raux-Yao",
                  "ranking": 17323
                },
                {
                  "player_name": "Bamo Meïté",
                  "ranking": 17324
                },
                {
                  "player_name": "Modibo Sagnan",
                  "ranking": 17325
                }
              ]
            }
          }
        }
      },
      "team_totals": {
        "projected_goals": 1,
        "expected_goals": 1.97,
        "expected_assists": 0.72,
        "total_shots": 10,
        "shots_on_target": 9,
        "total_passes": 362,
        "interceptions": 6,
        "tackles": 15,
        "avg_rating": 83.61,
        "possession_estimated_pct": 50.2,
        "pressing_actions_per_90": 6.4
      }
    },
    "South Africa": {
      "formation": "4-2-3-1",
      "players": {
        "Oswin Appollis": {
          "player_id": 984505,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 7,
          "height": 172,
          "market_value": 2700000,
          "stats": {
            "key_pass": 2,
            "expected_assists": 0.1066,
            "assists": 0,
            "expected_goals": 0.1724,
            "rating": 87.7491,
            "minutes": 35,
            "total_pass": 16,
            "accurate_pass": 13,
            "ball_recovery": 3,
            "duels_won": 2,
            "total_shots": 1,
            "total_long_balls": 3,
            "accurate_long_balls": 2,
            "total_own_half_passes": 8,
            "accurate_own_half_passes": 8,
            "total_opp_half_passes": 31,
            "accurate_opp_half_passes": 23,
            "crosses_total": 2,
            "crosses_accurate": 1,
            "touches": 61,
            "possession_lost": 16.6809,
            "dispossessed": 1.9625,
            "duels_lost": 5,
            "aerial_won": 1,
            "aerial_lost": 0,
            "interceptions": 0,
            "tackles_won": 1,
            "tackles": 1,
            "clearances": 0,
            "total_contest": 6,
            "won_contest": 3,
            "challenges_lost": 2,
            "fouls": 1,
            "fouls_drawn": 2,
            "goal_rate": 0.9812,
            "goals": 0,
            "shots_on_target": 1,
            "shots_off_target": 4,
            "blocks": 0,
            "big_chances_created": 1,
            "big_chances_missed": 0,
            "xgot": 0.3042,
            "ball_carries": 25,
            "total_progression": 51,
            "progressive_carries": 2,
            "dribbles_attempted": 3,
            "dribbles_successful": 0.7,
            "crosses_attempted": 1.9,
            "duel_win_rate": 0.267,
            "pressing_faced": "MEDIUM",
            "matchup_zone": "RW vs CB",
            "numerical_situation": "1v1",
            "opponent_defenders": "Ladislav Krejčí",
            "opponent_faced": "Ladislav Krejčí",
            "antagonist_source": "attacking_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 81.0
          },
          "latest_10_games": [
            {
              "match_id": 15186710,
              "match_date": "2026-06-11",
              "home_team": "Mexico",
              "away_team": "South Africa",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "South Africa",
              "opponent": "Mexico",
              "stats": {
                "minutes": 13,
                "rating": 6.6,
                "assists": 0,
                "expected_assists": 0.0023,
                "total_shots": 0,
                "total_pass": 6,
                "accurate_pass": 5,
                "tackles": 1,
                "duels_won": 1,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "FIFA World Cup",
              "league_id": "16",
              "league_slug": "world-championship",
              "league_country": "World",
              "season_id": "58210",
              "season_name": "World Cup 2026",
              "season_year": "2026"
            },
            {
              "match_id": 14372311,
              "match_date": "2026-05-23",
              "home_team": "ORBIT College FC",
              "away_team": "Orlando Pirates",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Orlando Pirates",
              "opponent": "ORBIT College FC",
              "stats": {
                "minutes": 84,
                "rating": 7.2,
                "assists": 0,
                "expected_goals": 0.0605,
                "expected_assists": 0.5595,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 36,
                "accurate_pass": 27,
                "key_pass": 2,
                "tackles": 2,
                "tackles_won": 2,
                "duels_won": 8,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "South African Premier Division",
              "league_id": "358",
              "league_slug": "premiership",
              "league_country": "South Africa",
              "season_id": "79701",
              "season_name": "Premiership 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14365971,
              "match_date": "2026-05-16",
              "home_team": "Orlando Pirates",
              "away_team": "Durban City FC",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Orlando Pirates",
              "opponent": "Durban City FC",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "assists": 0,
                "expected_goals": 0.3613,
                "expected_assists": 0.4004,
                "total_shots": 7,
                "shots_on_target": 1,
                "shots_off_target": 4,
                "total_pass": 47,
                "accurate_pass": 35,
                "key_pass": 2,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 7,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "South African Premier Division",
              "league_id": "358",
              "league_slug": "premiership",
              "league_country": "South Africa",
              "season_id": "79701",
              "season_name": "Premiership 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14365964,
              "match_date": "2026-05-09",
              "home_team": "Magesi FC",
              "away_team": "Orlando Pirates",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Orlando Pirates",
              "opponent": "Magesi FC",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "goal_rate": 1.0,
                "goals": 1,
                "assists": 0,
                "expected_goals": 0.8912,
                "expected_assists": 0.047,
                "total_shots": 4,
                "shots_on_target": 2,
                "total_pass": 37,
                "accurate_pass": 31,
                "key_pass": 2,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 3,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "South African Premier Division",
              "league_id": "358",
              "league_slug": "premiership",
              "league_country": "South Africa",
              "season_id": "79701",
              "season_name": "Premiership 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 977,
            "combined_rank_score": 350.0,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 452.0,
            "fifa_overall": 81.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 6,
            "squad_role": "starter",
            "projected_match_rating": 6.7491,
            "source_file": "data/player_rankings.csv",
            "player_name": "Oswin Appollis",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Rodrigo Aguirre",
                  "ranking": 972
                },
                {
                  "player_name": "Gonzalo Piovi",
                  "ranking": 973
                },
                {
                  "player_name": "Alan Patrick",
                  "ranking": 974
                },
                {
                  "player_name": "Vladimir Lučić",
                  "ranking": 975
                },
                {
                  "player_name": "Shaquille Riley Pinas",
                  "ranking": 976
                }
              ],
              "lower": [
                {
                  "player_name": "Franklin Tebo",
                  "ranking": 978
                },
                {
                  "player_name": "Eduardo Aguirre",
                  "ranking": 979
                },
                {
                  "player_name": "Amaury Morales",
                  "ranking": 980
                },
                {
                  "player_name": "Andrej Bačanin",
                  "ranking": 981
                },
                {
                  "player_name": "Esteban Lozano",
                  "ranking": 982
                }
              ]
            }
          }
        },
        "Teboho Mokoena": {
          "player_id": 881117,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 4,
          "height": 176,
          "market_value": 3100000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.0298,
            "assists": 0,
            "expected_goals": 0.1219,
            "rating": 89.5393,
            "minutes": 88,
            "total_pass": 45,
            "accurate_pass": 41,
            "ball_recovery": 4,
            "duels_won": 4,
            "total_shots": 1,
            "total_long_balls": 3,
            "accurate_long_balls": 2,
            "total_own_half_passes": 21,
            "accurate_own_half_passes": 19,
            "total_opp_half_passes": 30,
            "accurate_opp_half_passes": 26,
            "crosses_total": 5,
            "crosses_accurate": 1,
            "touches": 68,
            "possession_lost": 12.7608,
            "dispossessed": 1.9632,
            "duels_lost": 5,
            "aerial_won": 1,
            "aerial_lost": 1,
            "interceptions": 2,
            "tackles_won": 1,
            "tackles": 2,
            "clearances": 1,
            "total_contest": 3,
            "won_contest": 2,
            "challenges_lost": 2,
            "fouls": 1,
            "fouls_drawn": 1,
            "goal_rate": 0.9816,
            "goals": 0,
            "shots_on_target": 2,
            "shots_off_target": 1,
            "blocks": 0,
            "big_chances_created": 1,
            "big_chances_missed": 0,
            "xgot": 0.7362,
            "ball_carries": 20,
            "total_progression": 50,
            "progressive_carries": 1,
            "dribbles_attempted": 3,
            "dribbles_successful": 0.7,
            "crosses_attempted": 1.9,
            "duel_win_rate": 0.269,
            "pressing_faced": "MEDIUM",
            "matchup_zone": "LW vs CB",
            "numerical_situation": "1v1",
            "opponent_defenders": "Ladislav Krejčí",
            "opponent_faced": "Ladislav Krejčí",
            "antagonist_source": "attacking_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 83.0
          },
          "latest_10_games": [
            {
              "match_id": 15186710,
              "match_date": "2026-06-11",
              "home_team": "Mexico",
              "away_team": "South Africa",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "South Africa",
              "opponent": "Mexico",
              "stats": {
                "minutes": 90,
                "rating": 6.5,
                "assists": 0,
                "expected_assists": 0.011,
                "total_shots": 0,
                "total_pass": 42,
                "accurate_pass": 39,
                "key_pass": 1,
                "interceptions": 2,
                "clearances": 1,
                "aerial_won": 2,
                "duels_won": 4,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "FIFA World Cup",
              "league_id": "16",
              "league_slug": "world-championship",
              "league_country": "World",
              "season_id": "58210",
              "season_name": "World Cup 2026",
              "season_year": "2026"
            },
            {
              "match_id": 14365976,
              "match_date": "2026-05-12",
              "home_team": "TS Galaxy",
              "away_team": "Mamelodi Sundowns",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Mamelodi Sundowns",
              "opponent": "TS Galaxy",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assists": 0,
                "expected_goals": 0.0322,
                "expected_assists": 0.069,
                "total_shots": 2,
                "total_pass": 77,
                "accurate_pass": 71,
                "interceptions": 1,
                "aerial_won": 2,
                "duels_won": 5,
                "ball_recovery": 8
              },
              "has_player_stats": true,
              "league_name": "South African Premier Division",
              "league_id": "358",
              "league_slug": "premiership",
              "league_country": "South Africa",
              "season_id": "79701",
              "season_name": "Premiership 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14365957,
              "match_date": "2026-05-09",
              "home_team": "Mamelodi Sundowns",
              "away_team": "Siwelele FC",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Mamelodi Sundowns",
              "opponent": "Siwelele FC",
              "stats": {
                "minutes": 68,
                "rating": 8.0,
                "goal_rate": 1.0,
                "goals": 1,
                "assists": 0,
                "expected_goals": 0.0913,
                "expected_assists": 0.1143,
                "total_shots": 3,
                "shots_on_target": 2,
                "shots_off_target": 1,
                "total_pass": 41,
                "accurate_pass": 36,
                "key_pass": 1,
                "tackles": 3,
                "tackles_won": 1,
                "interceptions": 1,
                "duels_won": 4,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "South African Premier Division",
              "league_id": "358",
              "league_slug": "premiership",
              "league_country": "South Africa",
              "season_id": "79701",
              "season_name": "Premiership 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14500088,
              "match_date": "2026-05-06",
              "home_team": "Mamelodi Sundowns",
              "away_team": "Kaizer Chiefs",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Mamelodi Sundowns",
              "opponent": "Kaizer Chiefs",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assists": 0,
                "expected_goals": 0.0109,
                "expected_assists": 0.1322,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 47,
                "accurate_pass": 38,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 2,
                "duels_won": 3,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "South African Premier Division",
              "league_id": "358",
              "league_slug": "premiership",
              "league_country": "South Africa",
              "season_id": "79701",
              "season_name": "Premiership 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 849,
            "combined_rank_score": 243.0,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 243.0,
            "fifa_overall": 83.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 3,
            "squad_role": "starter",
            "projected_match_rating": 6.5393,
            "source_file": "data/player_rankings.csv",
            "player_name": "Teboho Mokoena",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Mateusz Żukowski",
                  "ranking": 844
                },
                {
                  "player_name": "João Klauss",
                  "ranking": 845
                },
                {
                  "player_name": "Adri Mehmeti",
                  "ranking": 846
                },
                {
                  "player_name": "Rodri Sánchez",
                  "ranking": 847
                },
                {
                  "player_name": "Jesús Gallardo",
                  "ranking": 848
                }
              ],
              "lower": [
                {
                  "player_name": "Alexandru Mățan",
                  "ranking": 850
                },
                {
                  "player_name": "Sebastián Córdova",
                  "ranking": 851
                },
                {
                  "player_name": "Yusuf Bamidele",
                  "ranking": 852
                },
                {
                  "player_name": "Léo Ceará",
                  "ranking": 853
                },
                {
                  "player_name": "Pablo Bennevendo",
                  "ranking": 854
                }
              ]
            }
          }
        },
        "Thalente Mbatha": {
          "player_id": 1014410,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 5,
          "height": 164,
          "market_value": 2100000,
          "stats": {
            "key_pass": 0,
            "expected_assists": 0.021,
            "assists": 0,
            "expected_goals": 0.048,
            "rating": 87.6076,
            "minutes": 44,
            "total_pass": 20,
            "accurate_pass": 15,
            "ball_recovery": 2,
            "duels_won": 3,
            "total_shots": 0,
            "total_long_balls": 6,
            "accurate_long_balls": 4,
            "total_own_half_passes": 19,
            "accurate_own_half_passes": 18,
            "total_opp_half_passes": 31,
            "accurate_opp_half_passes": 23,
            "crosses_total": 2,
            "crosses_accurate": 1,
            "touches": 63,
            "possession_lost": 12.5107,
            "dispossessed": 0.9812,
            "duels_lost": 3,
            "aerial_won": 2,
            "aerial_lost": 1,
            "interceptions": 1,
            "tackles_won": 1,
            "tackles": 2,
            "clearances": 2,
            "total_contest": 2,
            "won_contest": 2,
            "challenges_lost": 1,
            "fouls": 3,
            "fouls_drawn": 3,
            "goal_rate": 0.0,
            "goals": 0,
            "shots_on_target": 1,
            "shots_off_target": 2,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0392,
            "ball_carries": 24,
            "total_progression": 65,
            "progressive_carries": 1,
            "opponent_faced": "Adam Hložek, Tomáš Souček, Alexandr Sojka",
            "matchup_zone": "Shadow Striker vs CDM + CB — Zone 14 Battle",
            "antagonist_source": "defensive_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 81.0
          },
          "latest_10_games": [
            {
              "match_id": 15186710,
              "match_date": "2026-06-11",
              "home_team": "Mexico",
              "away_team": "South Africa",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "South Africa",
              "opponent": "Mexico",
              "stats": {
                "minutes": 34,
                "rating": 6.5,
                "assists": 0,
                "expected_assists": 0.0001,
                "total_shots": 0,
                "total_pass": 7,
                "accurate_pass": 4,
                "tackles": 2,
                "tackles_won": 1,
                "duels_won": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "FIFA World Cup",
              "league_id": "16",
              "league_slug": "world-championship",
              "league_country": "World",
              "season_id": "58210",
              "season_name": "World Cup 2026",
              "season_year": "2026"
            },
            {
              "match_id": 14372311,
              "match_date": "2026-05-23",
              "home_team": "ORBIT College FC",
              "away_team": "Orlando Pirates",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Orlando Pirates",
              "opponent": "ORBIT College FC",
              "stats": {
                "minutes": 70,
                "rating": 7.6,
                "assists": 0,
                "expected_goals": 0.0187,
                "expected_assists": 0.0965,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 60,
                "accurate_pass": 49,
                "tackles": 3,
                "tackles_won": 3,
                "duels_won": 5,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "South African Premier Division",
              "league_id": "358",
              "league_slug": "premiership",
              "league_country": "South Africa",
              "season_id": "79701",
              "season_name": "Premiership 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14365971,
              "match_date": "2026-05-16",
              "home_team": "Orlando Pirates",
              "away_team": "Durban City FC",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Orlando Pirates",
              "opponent": "Durban City FC",
              "stats": {
                "minutes": 90,
                "rating": 7.8,
                "assists": 0,
                "expected_goals": 0.1597,
                "expected_assists": 0.0741,
                "total_shots": 4,
                "shots_on_target": 1,
                "shots_off_target": 2,
                "total_pass": 69,
                "accurate_pass": 54,
                "key_pass": 3,
                "tackles": 2,
                "tackles_won": 2,
                "duels_won": 2,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "South African Premier Division",
              "league_id": "358",
              "league_slug": "premiership",
              "league_country": "South Africa",
              "season_id": "79701",
              "season_name": "Premiership 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14365964,
              "match_date": "2026-05-09",
              "home_team": "Magesi FC",
              "away_team": "Orlando Pirates",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Orlando Pirates",
              "opponent": "Magesi FC",
              "stats": {
                "minutes": 86,
                "rating": 7.0,
                "assists": 0,
                "expected_goals": 0.0124,
                "expected_assists": 0.0616,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 68,
                "accurate_pass": 60,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 2,
                "aerial_won": 2,
                "duels_won": 6,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "South African Premier Division",
              "league_id": "358",
              "league_slug": "premiership",
              "league_country": "South Africa",
              "season_id": "79701",
              "season_name": "Premiership 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 1141,
            "combined_rank_score": 361.0,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 469.0,
            "fifa_overall": 81.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 8,
            "squad_role": "starter",
            "projected_match_rating": 6.6076,
            "source_file": "data/player_rankings.csv",
            "player_name": "Thalente Mbatha",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Bradley Burrowes",
                  "ranking": 1136
                },
                {
                  "player_name": "Jun-seok Lee",
                  "ranking": 1137
                },
                {
                  "player_name": "Santiago López Garcia",
                  "ranking": 1138
                },
                {
                  "player_name": "Carles Pérez",
                  "ranking": 1139
                },
                {
                  "player_name": "Omar Govea",
                  "ranking": 1140
                }
              ],
              "lower": [
                {
                  "player_name": "Nkosinathi Sibisi",
                  "ranking": 1142
                },
                {
                  "player_name": "Valentín Vada",
                  "ranking": 1143
                },
                {
                  "player_name": "Lucas Esteves",
                  "ranking": 1144
                },
                {
                  "player_name": "Fábio Martins",
                  "ranking": 1145
                },
                {
                  "player_name": "Fiston Mayele",
                  "ranking": 1146
                }
              ]
            }
          }
        },
        "Aubrey Modiba": {
          "player_id": 837099,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 6,
          "height": 167,
          "market_value": 1900000,
          "stats": {
            "interceptions": 0,
            "tackles": 3,
            "tackles_won": 1,
            "clearances": 0,
            "aerial_won": 0,
            "rating": 87.9545,
            "minutes": 78,
            "total_pass": 22,
            "accurate_pass": 18,
            "duels_won": 5,
            "total_long_balls": 6,
            "accurate_long_balls": 3,
            "total_own_half_passes": 16,
            "accurate_own_half_passes": 15,
            "total_opp_half_passes": 23,
            "accurate_opp_half_passes": 17,
            "crosses_total": 7,
            "crosses_accurate": 2,
            "touches": 73,
            "possession_lost": 20.3605,
            "dispossessed": 1.9625,
            "duels_lost": 7,
            "aerial_lost": 1,
            "total_contest": 3,
            "won_contest": 1,
            "ball_recovery": 4,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 2,
            "blocks": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "assists": 0,
            "expected_goals": 0.0467,
            "expected_assists": 0.049,
            "total_shots": 1,
            "shots_on_target": 1,
            "shots_off_target": 1,
            "big_chances_created": 2,
            "xgot": 0.1864,
            "ball_carries": 21,
            "total_progression": 70,
            "progressive_carries": 1,
            "key_pass": 2,
            "tackles_in_zone": 1.9,
            "tackles_won_in_zone": 1.6,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 0.9,
            "defensive_success_rate": 0.553,
            "opponent_faced": "Tomáš Holeš",
            "pressing_zone": "Right Wingback vs Left Back — Overlapping Run",
            "matchup_zone": "Right Wingback vs Left Back — Overlapping Run",
            "antagonist_source": "defensive_duel",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 82.0
          },
          "latest_10_games": [
            {
              "match_id": 15186710,
              "match_date": "2026-06-11",
              "home_team": "Mexico",
              "away_team": "South Africa",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "South Africa",
              "opponent": "Mexico",
              "stats": {
                "minutes": 77,
                "rating": 5.9,
                "assists": 0,
                "expected_goals": 0.0161,
                "expected_assists": 0.0027,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 15,
                "accurate_pass": 12,
                "tackles": 3,
                "tackles_won": 1,
                "duels_won": 5,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "FIFA World Cup",
              "league_id": "16",
              "league_slug": "world-championship",
              "league_country": "World",
              "season_id": "58210",
              "season_name": "World Cup 2026",
              "season_year": "2026"
            },
            {
              "match_id": 14365976,
              "match_date": "2026-05-12",
              "home_team": "TS Galaxy",
              "away_team": "Mamelodi Sundowns",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Mamelodi Sundowns",
              "opponent": "TS Galaxy",
              "stats": {
                "minutes": 90,
                "rating": 6.0,
                "assists": 0,
                "expected_goals": 0.0442,
                "expected_assists": 0.4726,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 61,
                "accurate_pass": 52,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 2,
                "duels_won": 5,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "South African Premier Division",
              "league_id": "358",
              "league_slug": "premiership",
              "league_country": "South Africa",
              "season_id": "79701",
              "season_name": "Premiership 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14365957,
              "match_date": "2026-05-09",
              "home_team": "Mamelodi Sundowns",
              "away_team": "Siwelele FC",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Mamelodi Sundowns",
              "opponent": "Siwelele FC",
              "stats": {
                "minutes": 75,
                "rating": 6.9,
                "assists": 0,
                "expected_goals": 0.191,
                "expected_assists": 0.1329,
                "total_shots": 3,
                "shots_on_target": 2,
                "shots_off_target": 1,
                "total_pass": 42,
                "accurate_pass": 36,
                "key_pass": 3,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 3,
                "clearances": 1,
                "duels_won": 3,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "South African Premier Division",
              "league_id": "358",
              "league_slug": "premiership",
              "league_country": "South Africa",
              "season_id": "79701",
              "season_name": "Premiership 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14500088,
              "match_date": "2026-05-06",
              "home_team": "Mamelodi Sundowns",
              "away_team": "Kaizer Chiefs",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Mamelodi Sundowns",
              "opponent": "Kaizer Chiefs",
              "stats": {
                "minutes": 86,
                "rating": 6.6,
                "assists": 0,
                "expected_goals": 0.0895,
                "expected_assists": 0.0166,
                "total_shots": 3,
                "shots_on_target": 2,
                "shots_off_target": 1,
                "total_pass": 42,
                "accurate_pass": 30,
                "tackles": 4,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 2,
                "duels_won": 6,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "South African Premier Division",
              "league_id": "358",
              "league_slug": "premiership",
              "league_country": "South Africa",
              "season_id": "79701",
              "season_name": "Premiership 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 1086,
            "combined_rank_score": 295.5,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 340.0,
            "fifa_overall": 82.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 12,
            "squad_role": "starter",
            "projected_match_rating": 5.9545,
            "source_file": "data/player_rankings.csv",
            "player_name": "Aubrey Modiba",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Javier Hernández",
                  "ranking": 1081
                },
                {
                  "player_name": "Maycon",
                  "ranking": 1082
                },
                {
                  "player_name": "Álvaro Tejero",
                  "ranking": 1083
                },
                {
                  "player_name": "Andrés Sánchez",
                  "ranking": 1084
                },
                {
                  "player_name": "Lima",
                  "ranking": 1085
                }
              ],
              "lower": [
                {
                  "player_name": "Noah Fadiga",
                  "ranking": 1087
                },
                {
                  "player_name": "Jalil Elias",
                  "ranking": 1088
                },
                {
                  "player_name": "Denis Halinský",
                  "ranking": 1089
                },
                {
                  "player_name": "Sebastián Jurado",
                  "ranking": 1090
                },
                {
                  "player_name": "Juan Bezerra",
                  "ranking": 1091
                }
              ]
            }
          }
        },
        "Mbekezeli Mbokazi": {
          "player_id": 2058228,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 14,
          "height": 180,
          "market_value": 3800000,
          "stats": {
            "interceptions": 1,
            "tackles": 2,
            "tackles_won": 1,
            "clearances": 4,
            "aerial_won": 0,
            "rating": 89.5871,
            "minutes": 90,
            "total_pass": 30,
            "accurate_pass": 24,
            "duels_won": 5,
            "total_long_balls": 7,
            "accurate_long_balls": 3,
            "total_own_half_passes": 21,
            "accurate_own_half_passes": 20,
            "total_opp_half_passes": 10,
            "accurate_opp_half_passes": 6,
            "crosses_total": 2,
            "crosses_accurate": 1,
            "touches": 51,
            "possession_lost": 10.3342,
            "dispossessed": 2.9526,
            "duels_lost": 3,
            "aerial_lost": 1,
            "total_contest": 1,
            "won_contest": 0,
            "ball_recovery": 3,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 3,
            "blocks": 1,
            "goal_rate": 0.0,
            "goals": 0,
            "assists": 0,
            "expected_goals": 0.0154,
            "expected_assists": 0.0451,
            "total_shots": 1,
            "shots_on_target": 1,
            "shots_off_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0787,
            "ball_carries": 16,
            "total_progression": 38,
            "progressive_carries": 0,
            "key_pass": 1,
            "tackles_in_zone": 1.0,
            "tackles_won_in_zone": 1.0,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.6,
            "aerial_duels_won": 0.5,
            "defensive_success_rate": 0.698,
            "opponent_faced": "Patrik Schick",
            "pressing_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
            "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
            "antagonist_source": "defensive_duel",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 83.0
          },
          "latest_10_games": [
            {
              "match_id": 15186710,
              "match_date": "2026-06-11",
              "home_team": "Mexico",
              "away_team": "South Africa",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "South Africa",
              "opponent": "Mexico",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "assists": 0,
                "expected_goals": 0.0136,
                "expected_assists": 0.0517,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 30,
                "accurate_pass": 23,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 4,
                "duels_won": 5,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "FIFA World Cup",
              "league_id": "16",
              "league_slug": "world-championship",
              "league_country": "World",
              "season_id": "58210",
              "season_name": "World Cup 2026",
              "season_year": "2026"
            },
            {
              "match_id": 15171557,
              "match_date": "2026-05-16",
              "home_team": "CF Montréal",
              "away_team": "Chicago Fire",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Chicago Fire",
              "opponent": "CF Montréal",
              "stats": {
                "minutes": 90,
                "rating": 7.8,
                "assists": 0,
                "expected_assists": 0.0031,
                "total_shots": 0,
                "total_pass": 34,
                "accurate_pass": 29,
                "key_pass": 1,
                "tackles": 5,
                "tackles_won": 4,
                "interceptions": 1,
                "clearances": 8,
                "aerial_won": 1,
                "duels_won": 6,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "MLS",
              "league_id": "242",
              "league_slug": "mls",
              "league_country": "USA",
              "season_id": "86668",
              "season_name": "MLS 2026",
              "season_year": "2026"
            }
          ],
          "ranking": {
            "global_player_rank": 865,
            "combined_rank_score": 243.0,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 243.0,
            "fifa_overall": 83.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 2,
            "squad_role": "starter",
            "projected_match_rating": 6.5871,
            "source_file": "data/player_rankings.csv",
            "player_name": "Mbekezeli Mbokazi",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Santiago Homenchenko",
                  "ranking": 860
                },
                {
                  "player_name": "Tjark Lasse Scheller",
                  "ranking": 861
                },
                {
                  "player_name": "Pavel Pérez",
                  "ranking": 862
                },
                {
                  "player_name": "Vanderlan",
                  "ranking": 863
                },
                {
                  "player_name": "Florinel Coman",
                  "ranking": 864
                }
              ],
              "lower": [
                {
                  "player_name": "Guilherme Castilho",
                  "ranking": 866
                },
                {
                  "player_name": "Yuma Suzuki",
                  "ranking": 867
                },
                {
                  "player_name": "Rafael Fernández",
                  "ranking": 868
                },
                {
                  "player_name": "Júnior Santos",
                  "ranking": 869
                },
                {
                  "player_name": "Ognjen Mimović",
                  "ranking": 870
                }
              ]
            }
          }
        },
        "Ime Okon": {
          "player_id": 1507710,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 21,
          "height": 187,
          "market_value": 1900000,
          "stats": {
            "interceptions": 0,
            "tackles": 2,
            "tackles_won": 1,
            "clearances": 6,
            "aerial_won": 1,
            "rating": 73.2629,
            "minutes": 89,
            "total_pass": 49,
            "accurate_pass": 45,
            "duels_won": 3,
            "total_long_balls": 2,
            "accurate_long_balls": 0,
            "total_own_half_passes": 44,
            "accurate_own_half_passes": 41,
            "total_opp_half_passes": 4,
            "accurate_opp_half_passes": 3,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 60,
            "possession_lost": 4.9061,
            "dispossessed": 0.0,
            "duels_lost": 4,
            "aerial_lost": 3,
            "total_contest": 1,
            "won_contest": 0,
            "ball_recovery": 4,
            "challenges_lost": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "blocks": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "assists": 0,
            "expected_goals": 0.0,
            "expected_assists": 0.0006,
            "total_shots": 0,
            "shots_on_target": 0,
            "shots_off_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0,
            "ball_carries": 26,
            "total_progression": 0,
            "progressive_carries": 0,
            "key_pass": 0,
            "tackles_in_zone": 1.0,
            "tackles_won_in_zone": 1.0,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.6,
            "aerial_duels_won": 0.5,
            "defensive_success_rate": 0.698,
            "opponent_faced": "Patrik Schick",
            "pressing_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
            "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
            "antagonist_source": "defensive_duel",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 67.0
          },
          "latest_10_games": [
            {
              "match_id": 15186710,
              "match_date": "2026-06-11",
              "home_team": "Mexico",
              "away_team": "South Africa",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "South Africa",
              "opponent": "Mexico",
              "stats": {
                "minutes": 90,
                "rating": 6.3,
                "assists": 0,
                "expected_assists": 0.0009,
                "total_shots": 0,
                "total_pass": 49,
                "accurate_pass": 45,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 6,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "FIFA World Cup",
              "league_id": "16",
              "league_slug": "world-championship",
              "league_country": "World",
              "season_id": "58210",
              "season_name": "World Cup 2026",
              "season_year": "2026"
            }
          ],
          "ranking": {
            "global_player_rank": 20648,
            "combined_rank_score": 4626.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 9002.0,
            "fifa_overall": 67.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 11,
            "squad_role": "starter",
            "projected_match_rating": 6.2629,
            "source_file": "data/player_rankings.csv",
            "player_name": "Ime Okon",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Mateo Pellegrino",
                  "ranking": 20643
                },
                {
                  "player_name": "Nicolas Schmid",
                  "ranking": 20644
                },
                {
                  "player_name": "Kevin Rodriguez",
                  "ranking": 20645
                },
                {
                  "player_name": "Bilal Bafdili",
                  "ranking": 20646
                },
                {
                  "player_name": "Nicholas Pierini",
                  "ranking": 20647
                }
              ],
              "lower": [
                {
                  "player_name": "Milan Havel",
                  "ranking": 20649
                },
                {
                  "player_name": "Luca Martínez Dupuy",
                  "ranking": 20650
                },
                {
                  "player_name": "Sultan Mandash",
                  "ranking": 20651
                },
                {
                  "player_name": "Adalid Terrazas",
                  "ranking": 20652
                },
                {
                  "player_name": "Nacho Ferri",
                  "ranking": 20653
                }
              ]
            }
          }
        },
        "Khuliso Mudau": {
          "player_id": 936047,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 20,
          "height": 181,
          "market_value": 1300000,
          "stats": {
            "interceptions": 1,
            "tackles": 3,
            "tackles_won": 3,
            "clearances": 2,
            "aerial_won": 0,
            "rating": 91.3895,
            "minutes": 89,
            "total_pass": 32,
            "accurate_pass": 28,
            "duels_won": 7,
            "total_long_balls": 3,
            "accurate_long_balls": 2,
            "total_own_half_passes": 24,
            "accurate_own_half_passes": 24,
            "total_opp_half_passes": 16,
            "accurate_opp_half_passes": 13,
            "crosses_total": 2,
            "crosses_accurate": 0,
            "touches": 59,
            "possession_lost": 7.8498,
            "dispossessed": 0.0,
            "duels_lost": 3,
            "aerial_lost": 1,
            "total_contest": 1,
            "won_contest": 1,
            "ball_recovery": 4,
            "challenges_lost": 1,
            "fouls": 2,
            "fouls_drawn": 3,
            "blocks": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "assists": 0,
            "expected_goals": 0.0,
            "expected_assists": 0.0092,
            "total_shots": 0,
            "shots_on_target": 0,
            "shots_off_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0,
            "ball_carries": 16,
            "total_progression": 75,
            "progressive_carries": 2,
            "key_pass": 0,
            "tackles_in_zone": 1.9,
            "tackles_won_in_zone": 1.7,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 1.0,
            "defensive_success_rate": 0.607,
            "opponent_faced": "Alexandr Sojka",
            "pressing_zone": "Left Wingback vs Right Back — Overlapping Run",
            "matchup_zone": "Left Wingback vs Right Back — Overlapping Run",
            "antagonist_source": "defensive_duel",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 85.0
          },
          "latest_10_games": [
            {
              "match_id": 15186710,
              "match_date": "2026-06-11",
              "home_team": "Mexico",
              "away_team": "South Africa",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "South Africa",
              "opponent": "Mexico",
              "stats": {
                "minutes": 90,
                "rating": 6.5,
                "assists": 0,
                "expected_assists": 0.0089,
                "total_shots": 0,
                "total_pass": 29,
                "accurate_pass": 25,
                "tackles": 4,
                "tackles_won": 3,
                "interceptions": 1,
                "clearances": 2,
                "duels_won": 7,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "FIFA World Cup",
              "league_id": "16",
              "league_slug": "world-championship",
              "league_country": "World",
              "season_id": "58210",
              "season_name": "World Cup 2026",
              "season_year": "2026"
            },
            {
              "match_id": 14365957,
              "match_date": "2026-05-09",
              "home_team": "Mamelodi Sundowns",
              "away_team": "Siwelele FC",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Mamelodi Sundowns",
              "opponent": "Siwelele FC",
              "stats": {
                "minutes": 90,
                "rating": 5.9,
                "assists": 0,
                "expected_assists": 0.0136,
                "total_shots": 0,
                "total_pass": 54,
                "accurate_pass": 51,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 2,
                "clearances": 1,
                "duels_won": 3,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "South African Premier Division",
              "league_id": "358",
              "league_slug": "premiership",
              "league_country": "South Africa",
              "season_id": "79701",
              "season_name": "Premiership 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14500088,
              "match_date": "2026-05-06",
              "home_team": "Mamelodi Sundowns",
              "away_team": "Kaizer Chiefs",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Mamelodi Sundowns",
              "opponent": "Kaizer Chiefs",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assists": 0,
                "expected_assists": 0.0112,
                "total_shots": 0,
                "total_pass": 41,
                "accurate_pass": 36,
                "tackles": 2,
                "tackles_won": 2,
                "clearances": 1,
                "duels_won": 7,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "South African Premier Division",
              "league_id": "358",
              "league_slug": "premiership",
              "league_country": "South Africa",
              "season_id": "79701",
              "season_name": "Premiership 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 1411,
            "combined_rank_score": 187.0,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 117.0,
            "fifa_overall": 85.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 15,
            "squad_role": "starter",
            "projected_match_rating": 6.3895,
            "source_file": "data/player_rankings.csv",
            "player_name": "Khuliso Mudau",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Mohamed Shehata",
                  "ranking": 1406
                },
                {
                  "player_name": "Nabil Donga",
                  "ranking": 1407
                },
                {
                  "player_name": "Anfernee Jamal Dijksteel",
                  "ranking": 1408
                },
                {
                  "player_name": "Sota Miura",
                  "ranking": 1409
                },
                {
                  "player_name": "Evidence Makgopa",
                  "ranking": 1410
                }
              ],
              "lower": [
                {
                  "player_name": "Souleymane Isaak Touré",
                  "ranking": 1412
                },
                {
                  "player_name": "Marko Soldo",
                  "ranking": 1413
                },
                {
                  "player_name": "Ayoub Khairi",
                  "ranking": 1414
                },
                {
                  "player_name": "Thiago Espinosa",
                  "ranking": 1415
                },
                {
                  "player_name": "Santiago Trigos",
                  "ranking": 1416
                }
              ]
            }
          }
        },
        "Ronwen Williams": {
          "player_id": 539792,
          "position": "G",
          "position_depth": "G",
          "is_starter": true,
          "shirt_number": 1,
          "height": 184,
          "market_value": 825000,
          "stats": {
            "saves": 2,
            "goals_prevented": 0.0,
            "rating": 88.2413,
            "minutes": 89,
            "total_pass": 40,
            "accurate_pass": 29,
            "total_long_balls": 11,
            "accurate_long_balls": 4,
            "touches": 49,
            "clearances": 3,
            "ball_recovery": 11,
            "high_claims": 2,
            "punches": 0.9812,
            "aerial_won": 0,
            "sweeper_actions": 1,
            "sweeper_accurate": 1,
            "saves_inside_box": 2,
            "possession_lost": 10.4697,
            "duels_won": 1,
            "duels_lost": 0,
            "total_contest": 0,
            "won_contest": 0,
            "fouls": 0,
            "fouls_drawn": 1,
            "total_own_half_passes": 31,
            "accurate_own_half_passes": 29,
            "assists": 0,
            "expected_assists": 0.0013,
            "total_shots": 0,
            "interceptions": 1,
            "expected_saves": 2.86,
            "high_pressure_saves": 1.09,
            "shots_faced": 6.1,
            "opponent_faced": "Tomáš Holeš, Tomáš Souček",
            "matchup_zone": "Goalkeeper shot-stopping context",
            "antagonist_source": "formation_fallback",
            "goals": 0,
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "expected_goals": 0.0,
            "fifa_overall": 82.0
          },
          "latest_10_games": [
            {
              "match_id": 15186710,
              "match_date": "2026-06-11",
              "home_team": "Mexico",
              "away_team": "South Africa",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "South Africa",
              "opponent": "Mexico",
              "stats": {
                "minutes": 90,
                "rating": 6.3,
                "assists": 0,
                "expected_assists": 0.0013,
                "total_shots": 0,
                "total_pass": 40,
                "accurate_pass": 28,
                "interceptions": 1,
                "clearances": 3,
                "ball_recovery": 11,
                "saves": 2,
                "goals_prevented": -0.7215
              },
              "has_player_stats": true,
              "league_name": "FIFA World Cup",
              "league_id": "16",
              "league_slug": "world-championship",
              "league_country": "World",
              "season_id": "58210",
              "season_name": "World Cup 2026",
              "season_year": "2026"
            },
            {
              "match_id": 14365976,
              "match_date": "2026-05-12",
              "home_team": "TS Galaxy",
              "away_team": "Mamelodi Sundowns",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Mamelodi Sundowns",
              "opponent": "TS Galaxy",
              "stats": {
                "minutes": 90,
                "rating": 6.5,
                "assists": 0,
                "expected_assists": 0.0003,
                "total_shots": 0,
                "total_pass": 20,
                "accurate_pass": 20,
                "ball_recovery": 8,
                "saves": 4,
                "goals_prevented": -0.0561
              },
              "has_player_stats": true,
              "league_name": "South African Premier Division",
              "league_id": "358",
              "league_slug": "premiership",
              "league_country": "South Africa",
              "season_id": "79701",
              "season_name": "Premiership 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14365957,
              "match_date": "2026-05-09",
              "home_team": "Mamelodi Sundowns",
              "away_team": "Siwelele FC",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Mamelodi Sundowns",
              "opponent": "Siwelele FC",
              "stats": {
                "minutes": 90,
                "rating": 6.1,
                "assists": 0,
                "expected_assists": 0.0007,
                "total_shots": 0,
                "total_pass": 56,
                "accurate_pass": 48,
                "clearances": 1,
                "duels_won": 1,
                "ball_recovery": 11,
                "saves": 2,
                "goals_prevented": -0.7163
              },
              "has_player_stats": true,
              "league_name": "South African Premier Division",
              "league_id": "358",
              "league_slug": "premiership",
              "league_country": "South Africa",
              "season_id": "79701",
              "season_name": "Premiership 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14500088,
              "match_date": "2026-05-06",
              "home_team": "Mamelodi Sundowns",
              "away_team": "Kaizer Chiefs",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Mamelodi Sundowns",
              "opponent": "Kaizer Chiefs",
              "stats": {
                "minutes": 90,
                "rating": 6.0,
                "assists": 0,
                "expected_assists": 0.0007,
                "total_shots": 0,
                "total_pass": 44,
                "accurate_pass": 33,
                "clearances": 1,
                "ball_recovery": 12,
                "goals_prevented": -0.6737
              },
              "has_player_stats": true,
              "league_name": "South African Premier Division",
              "league_id": "358",
              "league_slug": "premiership",
              "league_country": "South Africa",
              "season_id": "79701",
              "season_name": "Premiership 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 1850,
            "combined_rank_score": 326.0,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 380.0,
            "fifa_overall": 82.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 17,
            "squad_role": "starter",
            "projected_match_rating": 6.2413,
            "source_file": "data/player_rankings.csv",
            "player_name": "Ronwen Williams",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Mohamed Kanno",
                  "ranking": 1845
                },
                {
                  "player_name": "Vukašin Bogdanović",
                  "ranking": 1846
                },
                {
                  "player_name": "Kaito Yasui",
                  "ranking": 1847
                },
                {
                  "player_name": "Jose Pachuca",
                  "ranking": 1848
                },
                {
                  "player_name": "Redouane Berkane",
                  "ranking": 1849
                }
              ],
              "lower": [
                {
                  "player_name": "Fabrício Santos",
                  "ranking": 1851
                },
                {
                  "player_name": "Tiago Caballero",
                  "ranking": 1852
                },
                {
                  "player_name": "Faustino Barone",
                  "ranking": 1853
                },
                {
                  "player_name": "Alex Souza",
                  "ranking": 1854
                },
                {
                  "player_name": "Alexander De Ridder",
                  "ranking": 1855
                }
              ]
            }
          }
        },
        "Jayden Adams": {
          "player_id": 1049669,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 23,
          "height": 175,
          "market_value": 1900000,
          "stats": {
            "key_pass": 0,
            "expected_assists": 0.074,
            "assists": 0,
            "expected_goals": 0.0,
            "rating": 88.5893,
            "minutes": 61,
            "total_pass": 23,
            "accurate_pass": 19,
            "ball_recovery": 1,
            "duels_won": 1,
            "total_shots": 0,
            "total_long_balls": 3,
            "accurate_long_balls": 1,
            "total_own_half_passes": 17,
            "accurate_own_half_passes": 15,
            "total_opp_half_passes": 14,
            "accurate_opp_half_passes": 10,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 36,
            "possession_lost": 6.8686,
            "dispossessed": 0.0,
            "duels_lost": 2,
            "aerial_won": 0,
            "aerial_lost": 1,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 1,
            "clearances": 0,
            "total_contest": 1,
            "won_contest": 1,
            "challenges_lost": 0,
            "fouls": 3,
            "fouls_drawn": 1,
            "goal_rate": 0.0,
            "goals": 0,
            "shots_on_target": 0,
            "shots_off_target": 0,
            "blocks": 1,
            "big_chances_created": 1,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "ball_carries": 10,
            "total_progression": 15,
            "progressive_carries": 0,
            "opponent_faced": "Tomáš Souček",
            "matchup_zone": "Midfield lane",
            "antagonist_source": "midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 82.0
          },
          "latest_10_games": [
            {
              "match_id": 15186710,
              "match_date": "2026-06-11",
              "home_team": "Mexico",
              "away_team": "South Africa",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "South Africa",
              "opponent": "Mexico",
              "stats": {
                "minutes": 61,
                "rating": 6.6,
                "assists": 0,
                "expected_assists": 0.0595,
                "total_shots": 0,
                "total_pass": 20,
                "accurate_pass": 16,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "FIFA World Cup",
              "league_id": "16",
              "league_slug": "world-championship",
              "league_country": "World",
              "season_id": "58210",
              "season_name": "World Cup 2026",
              "season_year": "2026"
            },
            {
              "match_id": 14500088,
              "match_date": "2026-05-06",
              "home_team": "Mamelodi Sundowns",
              "away_team": "Kaizer Chiefs",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Mamelodi Sundowns",
              "opponent": "Kaizer Chiefs",
              "stats": {
                "minutes": 64,
                "rating": 6.0,
                "assists": 0,
                "expected_assists": 0.2189,
                "total_shots": 0,
                "total_pass": 44,
                "accurate_pass": 35,
                "key_pass": 2,
                "tackles": 1,
                "duels_won": 3,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "South African Premier Division",
              "league_id": "358",
              "league_slug": "premiership",
              "league_country": "South Africa",
              "season_id": "79701",
              "season_name": "Premiership 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 1352,
            "combined_rank_score": 296.0,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 336.0,
            "fifa_overall": 82.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 10,
            "squad_role": "starter",
            "projected_match_rating": 6.5893,
            "source_file": "data/player_rankings.csv",
            "player_name": "Jayden Adams",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Gelson Dala",
                  "ranking": 1347
                },
                {
                  "player_name": "Gustavo Cuéllar",
                  "ranking": 1348
                },
                {
                  "player_name": "Yael Trepy",
                  "ranking": 1349
                },
                {
                  "player_name": "Máté Tuboly",
                  "ranking": 1350
                },
                {
                  "player_name": "Mykola Kukharevych",
                  "ranking": 1351
                }
              ],
              "lower": [
                {
                  "player_name": "Yasuto Wakizaka",
                  "ranking": 1353
                },
                {
                  "player_name": "Miguel Vazquez",
                  "ranking": 1354
                },
                {
                  "player_name": "Valentin Gauthier",
                  "ranking": 1355
                },
                {
                  "player_name": "Bilal Boutobba",
                  "ranking": 1356
                },
                {
                  "player_name": "Renan Peixoto Nepomuceno",
                  "ranking": 1357
                }
              ]
            }
          }
        },
        "Relebohile Mofokeng": {
          "player_id": 1564998,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 10,
          "height": 166,
          "market_value": 2900000,
          "stats": {
            "key_pass": 3,
            "expected_assists": 0.2079,
            "assists": 0,
            "expected_goals": 0.199,
            "rating": 88.8212,
            "minutes": 89,
            "total_pass": 56,
            "accurate_pass": 44,
            "ball_recovery": 6,
            "duels_won": 4,
            "total_shots": 2,
            "total_long_balls": 5,
            "accurate_long_balls": 3,
            "total_own_half_passes": 13,
            "accurate_own_half_passes": 13,
            "total_opp_half_passes": 43,
            "accurate_opp_half_passes": 31,
            "crosses_total": 2,
            "crosses_accurate": 0,
            "touches": 78,
            "possession_lost": 21.2632,
            "dispossessed": 2.6199,
            "duels_lost": 7,
            "aerial_won": 1,
            "aerial_lost": 1,
            "interceptions": 1,
            "tackles_won": 2,
            "tackles": 2,
            "clearances": 0,
            "total_contest": 5,
            "won_contest": 2,
            "challenges_lost": 1,
            "fouls": 2,
            "fouls_drawn": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "shots_on_target": 3,
            "shots_off_target": 2,
            "blocks": 0,
            "big_chances_created": 1,
            "big_chances_missed": 0,
            "xgot": 0.0883,
            "ball_carries": 26,
            "total_progression": 91,
            "progressive_carries": 4,
            "dribbles_attempted": 3,
            "dribbles_successful": 0.9,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.323,
            "pressing_faced": "LOW",
            "matchup_zone": "CAM vs CM",
            "numerical_situation": "1v1",
            "opponent_defenders": "Tomáš Souček",
            "opponent_faced": "Tomáš Souček",
            "antagonist_source": "attacking_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 82.0
          },
          "latest_10_games": [
            {
              "match_id": 14372311,
              "match_date": "2026-05-23",
              "home_team": "ORBIT College FC",
              "away_team": "Orlando Pirates",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Orlando Pirates",
              "opponent": "ORBIT College FC",
              "stats": {
                "minutes": 90,
                "rating": 6.5,
                "assists": 0,
                "expected_goals": 0.2851,
                "expected_assists": 0.216,
                "total_shots": 3,
                "shots_off_target": 2,
                "total_pass": 59,
                "accurate_pass": 45,
                "key_pass": 3,
                "tackles": 1,
                "tackles_won": 1,
                "aerial_won": 2,
                "duels_won": 4,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "South African Premier Division",
              "league_id": "358",
              "league_slug": "premiership",
              "league_country": "South Africa",
              "season_id": "79701",
              "season_name": "Premiership 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14365971,
              "match_date": "2026-05-16",
              "home_team": "Orlando Pirates",
              "away_team": "Durban City FC",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Orlando Pirates",
              "opponent": "Durban City FC",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assists": 0,
                "expected_goals": 0.2598,
                "expected_assists": 0.2328,
                "total_shots": 9,
                "shots_on_target": 3,
                "shots_off_target": 2,
                "total_pass": 61,
                "accurate_pass": 50,
                "key_pass": 4,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 5,
                "ball_recovery": 8
              },
              "has_player_stats": true,
              "league_name": "South African Premier Division",
              "league_id": "358",
              "league_slug": "premiership",
              "league_country": "South Africa",
              "season_id": "79701",
              "season_name": "Premiership 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14365964,
              "match_date": "2026-05-09",
              "home_team": "Magesi FC",
              "away_team": "Orlando Pirates",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Orlando Pirates",
              "opponent": "Magesi FC",
              "stats": {
                "minutes": 82,
                "rating": 7.2,
                "assists": 0,
                "expected_goals": 0.0186,
                "expected_assists": 0.1636,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 50,
                "accurate_pass": 41,
                "key_pass": 2,
                "tackles": 3,
                "tackles_won": 3,
                "interceptions": 1,
                "duels_won": 4,
                "ball_recovery": 7
              },
              "has_player_stats": true,
              "league_name": "South African Premier Division",
              "league_id": "358",
              "league_slug": "premiership",
              "league_country": "South Africa",
              "season_id": "79701",
              "season_name": "Premiership 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 1076,
            "combined_rank_score": 295.5,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 340.0,
            "fifa_overall": 82.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 4,
            "squad_role": "starter",
            "projected_match_rating": 6.8212,
            "source_file": "data/player_rankings.csv",
            "player_name": "Relebohile Mofokeng",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Xander Dierckx",
                  "ranking": 1071
                },
                {
                  "player_name": "Ezequiel Unsaín",
                  "ranking": 1072
                },
                {
                  "player_name": "Mateo Ponte",
                  "ranking": 1073
                },
                {
                  "player_name": "Ismael Kandouss",
                  "ranking": 1074
                },
                {
                  "player_name": "Ante Oreč",
                  "ranking": 1075
                }
              ],
              "lower": [
                {
                  "player_name": "Hassan Altambakti",
                  "ranking": 1077
                },
                {
                  "player_name": "Bogdan Kostić",
                  "ranking": 1078
                },
                {
                  "player_name": "Hossam Abdelmaguid",
                  "ranking": 1079
                },
                {
                  "player_name": "Mateusz Łęgowski",
                  "ranking": 1080
                },
                {
                  "player_name": "Javier Hernández",
                  "ranking": 1081
                }
              ]
            }
          }
        },
        "Lyle Foster": {
          "player_id": 901907,
          "position": "F",
          "position_depth": "F",
          "is_starter": true,
          "shirt_number": 9,
          "height": 180,
          "market_value": 8300000,
          "stats": {
            "expected_goals": 0.0241,
            "goal_rate": 0.0003,
            "goals": 0,
            "shots_on_target": 0,
            "expected_assists": 0.0004,
            "key_pass": 0,
            "rating": 77.9609,
            "minutes": 51,
            "total_shots": 2,
            "duels_won": 1,
            "aerial_won": 2,
            "total_pass": 5,
            "accurate_pass": 1,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 4,
            "accurate_opp_half_passes": 1,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 10,
            "possession_lost": 6.5045,
            "dispossessed": 2.0014,
            "duels_lost": 5,
            "aerial_lost": 3,
            "total_contest": 1,
            "won_contest": 0,
            "ball_recovery": 1,
            "challenges_lost": 1,
            "fouls": 0,
            "fouls_drawn": 1,
            "assists": 0,
            "shots_off_target": 1,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "offsides": 0,
            "ball_carries": 4,
            "total_progression": 18,
            "progressive_carries": 1,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.3,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.18,
            "pressing_faced": "LOW",
            "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
            "numerical_situation": "1v2",
            "opponent_defenders": "Ladislav Krejčí, Robin Hranáč",
            "opponent_faced": "Ladislav Krejčí, Robin Hranáč",
            "antagonist_source": "attacking_duel",
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 72.0
          },
          "latest_10_games": [
            {
              "match_id": 15186710,
              "match_date": "2026-06-11",
              "home_team": "Mexico",
              "away_team": "South Africa",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "South Africa",
              "opponent": "Mexico",
              "stats": {
                "minutes": 56,
                "rating": 5.9,
                "assists": 0,
                "expected_goals": 0.0428,
                "expected_assists": 0.0004,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 5,
                "accurate_pass": 1,
                "duels_won": 1
              },
              "has_player_stats": true,
              "league_name": "FIFA World Cup",
              "league_id": "16",
              "league_slug": "world-championship",
              "league_country": "World",
              "season_id": "58210",
              "season_name": "World Cup 2026",
              "season_year": "2026"
            },
            {
              "match_id": 14023929,
              "match_date": "2026-05-10",
              "home_team": "Burnley",
              "away_team": "Aston Villa",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Burnley",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 21,
                "rating": 6.3,
                "assists": 0,
                "total_shots": 0,
                "total_pass": 5,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "Premier League",
              "league_id": "17",
              "league_slug": "premier-league",
              "league_country": "England",
              "season_id": "76986",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 17541,
            "combined_rank_score": 2075.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 3978.0,
            "fifa_overall": 72.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 1,
            "squad_role": "starter",
            "projected_match_rating": 5.9609,
            "source_file": "data/player_rankings.csv",
            "player_name": "Lyle Foster",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Luca Netz",
                  "ranking": 17536
                },
                {
                  "player_name": "Gustav Ludwigson",
                  "ranking": 17537
                },
                {
                  "player_name": "Walid Cheddira",
                  "ranking": 17538
                },
                {
                  "player_name": "Jonjoe Kenny",
                  "ranking": 17539
                },
                {
                  "player_name": "Ivica Ivušić",
                  "ranking": 17540
                }
              ],
              "lower": [
                {
                  "player_name": "Jo Hyeon Woo",
                  "ranking": 17542
                },
                {
                  "player_name": "Kristoffer Nordfeldt",
                  "ranking": 17543
                },
                {
                  "player_name": "Leandro Díaz",
                  "ranking": 17544
                },
                {
                  "player_name": "Kosta Nedeljković",
                  "ranking": 17545
                },
                {
                  "player_name": "Salih Uçan",
                  "ranking": 17546
                }
              ]
            }
          }
        }
      },
      "bench_players": {
        "Sipho Chaine": {
          "player_id": 903610,
          "position": "G",
          "position_depth": "G_BENCH",
          "is_starter": false,
          "shirt_number": 24,
          "height": 180,
          "market_value": 1300000,
          "stats": {
            "saves": 0,
            "goals_prevented": 0.0,
            "rating": 88.808,
            "minutes": 4,
            "total_pass": 1,
            "accurate_pass": 1,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "touches": 1,
            "clearances": 0,
            "ball_recovery": 0,
            "high_claims": 0,
            "punches": 0.0,
            "aerial_won": 0,
            "sweeper_actions": 0,
            "sweeper_accurate": 0,
            "saves_inside_box": 0,
            "possession_lost": 0.0637,
            "duels_won": 0,
            "duels_lost": 0,
            "total_contest": 0,
            "won_contest": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "total_own_half_passes": 1,
            "accurate_own_half_passes": 1,
            "total_shots": 0,
            "bench_appearance_probability": 0.109,
            "bench_expected_minutes": 4.39,
            "goals": 0,
            "projected_goals": 0,
            "goal_probability": 0.0,
            "assists": 0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "expected_goals": 0.0,
            "expected_assists": 0.0,
            "fifa_overall": 82.0
          },
          "latest_10_games": [
            {
              "match_id": 14372311,
              "match_date": "2026-05-23",
              "home_team": "ORBIT College FC",
              "away_team": "Orlando Pirates",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Orlando Pirates",
              "opponent": "ORBIT College FC",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assists": 0,
                "expected_assists": 0.0051,
                "total_shots": 0,
                "total_pass": 25,
                "accurate_pass": 24,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "South African Premier Division",
              "league_id": "358",
              "league_slug": "premiership",
              "league_country": "South Africa",
              "season_id": "79701",
              "season_name": "Premiership 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14365971,
              "match_date": "2026-05-16",
              "home_team": "Orlando Pirates",
              "away_team": "Durban City FC",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Orlando Pirates",
              "opponent": "Durban City FC",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assists": 0,
                "expected_assists": 0.004,
                "total_shots": 0,
                "total_pass": 27,
                "accurate_pass": 25,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 9
              },
              "has_player_stats": true,
              "league_name": "South African Premier Division",
              "league_id": "358",
              "league_slug": "premiership",
              "league_country": "South Africa",
              "season_id": "79701",
              "season_name": "Premiership 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14365964,
              "match_date": "2026-05-09",
              "home_team": "Magesi FC",
              "away_team": "Orlando Pirates",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Orlando Pirates",
              "opponent": "Magesi FC",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assists": 0,
                "expected_assists": 0.0015,
                "total_shots": 0,
                "total_pass": 30,
                "accurate_pass": 29,
                "ball_recovery": 2,
                "saves": 1,
                "goals_prevented": 0.4299
              },
              "has_player_stats": true,
              "league_name": "South African Premier Division",
              "league_id": "358",
              "league_slug": "premiership",
              "league_country": "South Africa",
              "season_id": "79701",
              "season_name": "Premiership 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 1404,
            "combined_rank_score": 296.5,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 336.0,
            "fifa_overall": 82.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 13,
            "squad_role": "substitute",
            "projected_match_rating": 6.808,
            "source_file": "data/player_rankings.csv",
            "player_name": "Sipho Chaine",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Ryoma Watanabe",
                  "ranking": 1399
                },
                {
                  "player_name": "Igor Krasnopir",
                  "ranking": 1400
                },
                {
                  "player_name": "Mostafa Shobeir",
                  "ranking": 1401
                },
                {
                  "player_name": "Youssef El Fahli",
                  "ranking": 1402
                },
                {
                  "player_name": "Juan Sforza",
                  "ranking": 1403
                }
              ],
              "lower": [
                {
                  "player_name": "Renzo Machado",
                  "ranking": 1405
                },
                {
                  "player_name": "Mohamed Shehata",
                  "ranking": 1406
                },
                {
                  "player_name": "Nabil Donga",
                  "ranking": 1407
                },
                {
                  "player_name": "Anfernee Jamal Dijksteel",
                  "ranking": 1408
                },
                {
                  "player_name": "Sota Miura",
                  "ranking": 1409
                }
              ]
            }
          }
        },
        "Samukelo Kabini": {
          "player_id": 1518180,
          "position": "D",
          "position_depth": "D_BENCH",
          "is_starter": false,
          "shirt_number": 18,
          "height": 181,
          "market_value": 2300000,
          "stats": {
            "interceptions": 0,
            "tackles": 0,
            "tackles_won": 0,
            "clearances": 0,
            "aerial_won": 0,
            "duels_won": 1,
            "rating": 87.5742,
            "minutes": 14,
            "total_pass": 6,
            "accurate_pass": 5,
            "total_shots": 0,
            "bench_appearance_probability": 0.299,
            "bench_expected_minutes": 13.57,
            "goals": 0,
            "projected_goals": 0,
            "goal_probability": 0.0,
            "assists": 0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "expected_goals": 0.0,
            "expected_assists": 0.0,
            "fifa_overall": 81.0
          },
          "latest_10_games": [],
          "ranking": {
            "global_player_rank": 963,
            "combined_rank_score": 349.5,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 452.0,
            "fifa_overall": 81.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 7,
            "squad_role": "substitute",
            "projected_match_rating": 6.5742,
            "source_file": "data/player_rankings.csv",
            "player_name": "Samukelo Kabini",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Sodiq Awujoola",
                  "ranking": 958
                },
                {
                  "player_name": "Raúl Zúñiga",
                  "ranking": 959
                },
                {
                  "player_name": "Kasper Boogaard",
                  "ranking": 960
                },
                {
                  "player_name": "Miloš Veljković",
                  "ranking": 961
                },
                {
                  "player_name": "Ioannis Pittas",
                  "ranking": 962
                }
              ],
              "lower": [
                {
                  "player_name": "Jordan García",
                  "ranking": 964
                },
                {
                  "player_name": "Ramiro Sordo",
                  "ranking": 965
                },
                {
                  "player_name": "Manu Duah",
                  "ranking": 966
                },
                {
                  "player_name": "Andrés Gudiño",
                  "ranking": 967
                },
                {
                  "player_name": "Reece James",
                  "ranking": 968
                }
              ]
            }
          }
        },
        "Olwethu Makhanya": {
          "player_id": 1415019,
          "position": "D",
          "position_depth": "D_BENCH",
          "is_starter": false,
          "shirt_number": 29,
          "height": 182,
          "market_value": 2100000,
          "stats": {
            "interceptions": 0,
            "tackles": 0,
            "tackles_won": 0,
            "clearances": 0,
            "aerial_won": 0,
            "duels_won": 1,
            "rating": 63.5742,
            "minutes": 14,
            "total_pass": 6,
            "accurate_pass": 5,
            "total_shots": 0,
            "bench_appearance_probability": 0.299,
            "bench_expected_minutes": 13.57,
            "goals": 0,
            "projected_goals": 0,
            "goal_probability": 0.0,
            "assists": 0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "expected_goals": 0.0,
            "expected_assists": 0.0,
            "fifa_overall": 57.0
          },
          "latest_10_games": [],
          "ranking": {
            "global_player_rank": 24550,
            "combined_rank_score": 8333.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 16417.0,
            "fifa_overall": 57.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 9,
            "squad_role": "substitute",
            "projected_match_rating": 6.5742,
            "source_file": "data/player_rankings.csv",
            "player_name": "Olwethu Makhanya",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Nico Cavallo",
                  "ranking": 24545
                },
                {
                  "player_name": "Kwon Hyeok Kyu",
                  "ranking": 24546
                },
                {
                  "player_name": "Yusuf Özdemir",
                  "ranking": 24547
                },
                {
                  "player_name": "Fabian Tait",
                  "ranking": 24548
                },
                {
                  "player_name": "Markus Cimermancic",
                  "ranking": 24549
                }
              ],
              "lower": [
                {
                  "player_name": "Jona Niemiec",
                  "ranking": 24551
                },
                {
                  "player_name": "Kevin Ciubotaru",
                  "ranking": 24552
                },
                {
                  "player_name": "Ayman Fallatah",
                  "ranking": 24553
                },
                {
                  "player_name": "Nimfasha Berchimas",
                  "ranking": 24554
                },
                {
                  "player_name": "Suhayb Al-Zaid",
                  "ranking": 24555
                }
              ]
            }
          }
        },
        "Tshepang Moremi": {
          "player_id": 1101745,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 11,
          "height": 180,
          "market_value": 1000000,
          "stats": {
            "key_pass": 0,
            "expected_assists": 0.0509,
            "assists": 0,
            "expected_goals": 0.0371,
            "rating": 91.4497,
            "minutes": 22,
            "total_pass": 5,
            "accurate_pass": 4,
            "ball_recovery": 1,
            "duels_won": 2,
            "total_shots": 0,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_own_half_passes": 0,
            "accurate_own_half_passes": 0,
            "total_opp_half_passes": 5,
            "accurate_opp_half_passes": 4,
            "crosses_total": 2,
            "crosses_accurate": 0,
            "touches": 9,
            "possession_lost": 2.9944,
            "dispossessed": 0.9812,
            "duels_lost": 1,
            "aerial_won": 0,
            "aerial_lost": 1,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "total_contest": 1,
            "won_contest": 1,
            "challenges_lost": 1,
            "fouls": 0,
            "fouls_drawn": 1,
            "goal_rate": 0.0,
            "goals": 0,
            "shots_on_target": 0,
            "shots_off_target": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.012,
            "ball_carries": 3,
            "total_progression": 13,
            "progressive_carries": 1,
            "bench_appearance_probability": 0.499,
            "bench_expected_minutes": 21.97,
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 85.0
          },
          "latest_10_games": [
            {
              "match_id": 14372311,
              "match_date": "2026-05-23",
              "home_team": "ORBIT College FC",
              "away_team": "Orlando Pirates",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Orlando Pirates",
              "opponent": "ORBIT College FC",
              "stats": {
                "minutes": 61,
                "rating": 6.3,
                "assists": 0,
                "expected_goals": 0.6189,
                "expected_assists": 0.234,
                "total_shots": 3,
                "shots_off_target": 2,
                "total_pass": 27,
                "accurate_pass": 21,
                "key_pass": 1,
                "aerial_won": 1,
                "duels_won": 7
              },
              "has_player_stats": true,
              "league_name": "South African Premier Division",
              "league_id": "358",
              "league_slug": "premiership",
              "league_country": "South Africa",
              "season_id": "79701",
              "season_name": "Premiership 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14365971,
              "match_date": "2026-05-16",
              "home_team": "Orlando Pirates",
              "away_team": "Durban City FC",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Orlando Pirates",
              "opponent": "Durban City FC",
              "stats": {
                "minutes": 21,
                "rating": 7.0,
                "assists": 0,
                "expected_goals": 0.0298,
                "expected_assists": 0.2135,
                "total_shots": 2,
                "shots_on_target": 2,
                "total_pass": 15,
                "accurate_pass": 12,
                "key_pass": 3
              },
              "has_player_stats": true,
              "league_name": "South African Premier Division",
              "league_id": "358",
              "league_slug": "premiership",
              "league_country": "South Africa",
              "season_id": "79701",
              "season_name": "Premiership 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 1646,
            "combined_rank_score": 196.0,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 132.0,
            "fifa_overall": 85.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 16,
            "squad_role": "substitute",
            "projected_match_rating": 6.4497,
            "source_file": "data/player_rankings.csv",
            "player_name": "Tshepang Moremi",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Luis Díaz",
                  "ranking": 1641
                },
                {
                  "player_name": "Oleksandr Andriyevskiy",
                  "ranking": 1642
                },
                {
                  "player_name": "Emiliano Rigoni",
                  "ranking": 1643
                },
                {
                  "player_name": "Adrián Alcaraz",
                  "ranking": 1644
                },
                {
                  "player_name": "Shunsuke Saito",
                  "ranking": 1645
                }
              ],
              "lower": [
                {
                  "player_name": "Everton Ribeiro",
                  "ranking": 1647
                },
                {
                  "player_name": "Mahamadou Susoho",
                  "ranking": 1648
                },
                {
                  "player_name": "Wedtoin Latif Ouedraogo",
                  "ranking": 1649
                },
                {
                  "player_name": "Matsuoka Daiki",
                  "ranking": 1650
                },
                {
                  "player_name": "Motoki Hasegawa",
                  "ranking": 1651
                }
              ]
            }
          }
        },
        "Kamogelo Sebelebele": {
          "player_id": 1210653,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 36,
          "height": 166,
          "market_value": 780000,
          "stats": {
            "key_pass": 0,
            "expected_assists": 0.0239,
            "assists": 0,
            "expected_goals": 0.0148,
            "rating": 88.6724,
            "minutes": 22,
            "total_pass": 11,
            "accurate_pass": 9,
            "ball_recovery": 1,
            "duels_won": 1,
            "total_shots": 0,
            "bench_appearance_probability": 0.499,
            "bench_expected_minutes": 21.97,
            "goals": 0,
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 82.0
          },
          "latest_10_games": [
            {
              "match_id": 14372311,
              "match_date": "2026-05-23",
              "home_team": "ORBIT College FC",
              "away_team": "Orlando Pirates",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Orlando Pirates",
              "opponent": "ORBIT College FC",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assists": 0,
                "expected_goals": 0.4412,
                "expected_assists": 0.0409,
                "total_shots": 2,
                "shots_on_target": 2,
                "total_pass": 52,
                "accurate_pass": 48,
                "tackles": 3,
                "tackles_won": 3,
                "interceptions": 3,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "South African Premier Division",
              "league_id": "358",
              "league_slug": "premiership",
              "league_country": "South Africa",
              "season_id": "79701",
              "season_name": "Premiership 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14365971,
              "match_date": "2026-05-16",
              "home_team": "Orlando Pirates",
              "away_team": "Durban City FC",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Orlando Pirates",
              "opponent": "Durban City FC",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "assists": 0,
                "expected_goals": 0.1193,
                "expected_assists": 0.0688,
                "total_shots": 3,
                "shots_off_target": 2,
                "total_pass": 53,
                "accurate_pass": 46,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 3,
                "aerial_won": 1,
                "duels_won": 5,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "South African Premier Division",
              "league_id": "358",
              "league_slug": "premiership",
              "league_country": "South Africa",
              "season_id": "79701",
              "season_name": "Premiership 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14365964,
              "match_date": "2026-05-09",
              "home_team": "Magesi FC",
              "away_team": "Orlando Pirates",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Orlando Pirates",
              "opponent": "Magesi FC",
              "stats": {
                "minutes": 90,
                "rating": 9.0,
                "goal_rate": 1.0,
                "goals": 1,
                "assists": 0,
                "expected_goals": 0.0746,
                "expected_assists": 0.0626,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 48,
                "accurate_pass": 40,
                "tackles": 7,
                "tackles_won": 5,
                "interceptions": 2,
                "clearances": 5,
                "aerial_won": 1,
                "duels_won": 11,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "South African Premier Division",
              "league_id": "358",
              "league_slug": "premiership",
              "league_country": "South Africa",
              "season_id": "79701",
              "season_name": "Premiership 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 2186,
            "combined_rank_score": 319.5,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 339.0,
            "fifa_overall": 82.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 18,
            "squad_role": "substitute",
            "projected_match_rating": 6.6724,
            "source_file": "data/player_rankings.csv",
            "player_name": "Kamogelo Sebelebele",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Oussama Benbot",
                  "ranking": 2181
                },
                {
                  "player_name": "Konrad Michalak",
                  "ranking": 2182
                },
                {
                  "player_name": "Venício Tomás",
                  "ranking": 2183
                },
                {
                  "player_name": "Federico Mateos",
                  "ranking": 2184
                },
                {
                  "player_name": "Min-ho Yoon",
                  "ranking": 2185
                }
              ],
              "lower": [
                {
                  "player_name": "Spiwe Given Msimango",
                  "ranking": 2187
                },
                {
                  "player_name": "Tsotne Kapanadze",
                  "ranking": 2188
                },
                {
                  "player_name": "Shon Weissman",
                  "ranking": 2189
                },
                {
                  "player_name": "Isaac Thelin",
                  "ranking": 2190
                },
                {
                  "player_name": "Tomoya Koyamatsu",
                  "ranking": 2191
                }
              ]
            }
          }
        },
        "Iqraam Rayners": {
          "player_id": 991024,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 13,
          "height": 176,
          "market_value": 2800000,
          "stats": {
            "expected_goals": 0.0005,
            "goal_rate": 0.0001,
            "goals": 0,
            "shots_on_target": 0,
            "expected_assists": 0.001,
            "key_pass": 0,
            "rating": 90.155,
            "minutes": 25,
            "total_shots": 0,
            "duels_won": 0,
            "aerial_won": 0,
            "total_pass": 2,
            "accurate_pass": 2,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 1,
            "accurate_opp_half_passes": 1,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 3,
            "possession_lost": 1.1719,
            "dispossessed": 0.9812,
            "duels_lost": 1,
            "aerial_lost": 2,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 0,
            "challenges_lost": 1,
            "fouls": 0,
            "fouls_drawn": 0,
            "assists": 0,
            "shots_off_target": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0248,
            "offsides": 1,
            "ball_carries": 1,
            "total_progression": 6,
            "progressive_carries": 0,
            "bench_appearance_probability": 0.559,
            "bench_expected_minutes": 25.29,
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 84.0
          },
          "latest_10_games": [
            {
              "match_id": 15186710,
              "match_date": "2026-06-11",
              "home_team": "Mexico",
              "away_team": "South Africa",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "South Africa",
              "opponent": "Mexico",
              "stats": {
                "minutes": 76,
                "rating": 6.1,
                "assists": 0,
                "expected_assists": 0.003,
                "total_shots": 0,
                "total_pass": 10,
                "accurate_pass": 9,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "FIFA World Cup",
              "league_id": "16",
              "league_slug": "world-championship",
              "league_country": "World",
              "season_id": "58210",
              "season_name": "World Cup 2026",
              "season_year": "2026"
            },
            {
              "match_id": 14365976,
              "match_date": "2026-05-12",
              "home_team": "TS Galaxy",
              "away_team": "Mamelodi Sundowns",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Mamelodi Sundowns",
              "opponent": "TS Galaxy",
              "stats": {
                "minutes": 14,
                "rating": 6.3,
                "assists": 0,
                "expected_assists": 0.0089,
                "total_shots": 0,
                "total_pass": 3,
                "accurate_pass": 3
              },
              "has_player_stats": true,
              "league_name": "South African Premier Division",
              "league_id": "358",
              "league_slug": "premiership",
              "league_country": "South Africa",
              "season_id": "79701",
              "season_name": "Premiership 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14365957,
              "match_date": "2026-05-09",
              "home_team": "Mamelodi Sundowns",
              "away_team": "Siwelele FC",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Mamelodi Sundowns",
              "opponent": "Siwelele FC",
              "stats": {
                "minutes": 23,
                "rating": 6.5,
                "assists": 0,
                "expected_assists": 0.0092,
                "total_shots": 0,
                "total_pass": 8,
                "accurate_pass": 5,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "South African Premier Division",
              "league_id": "358",
              "league_slug": "premiership",
              "league_country": "South Africa",
              "season_id": "79701",
              "season_name": "Premiership 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14500088,
              "match_date": "2026-05-06",
              "home_team": "Mamelodi Sundowns",
              "away_team": "Kaizer Chiefs",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Mamelodi Sundowns",
              "opponent": "Kaizer Chiefs",
              "stats": {
                "minutes": 10,
                "rating": 6.5,
                "assists": 0,
                "expected_goals": 0.1187,
                "expected_assists": 0.0004,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 1,
                "aerial_won": 2,
                "duels_won": 2
              },
              "has_player_stats": true,
              "league_name": "South African Premier Division",
              "league_id": "358",
              "league_slug": "premiership",
              "league_country": "South Africa",
              "season_id": "79701",
              "season_name": "Premiership 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 840,
            "combined_rank_score": 236.5,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 231.0,
            "fifa_overall": 84.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 5,
            "squad_role": "substitute",
            "projected_match_rating": 6.155,
            "source_file": "data/player_rankings.csv",
            "player_name": "Iqraam Rayners",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Tomoya Ando",
                  "ranking": 835
                },
                {
                  "player_name": "Anthoni",
                  "ranking": 836
                },
                {
                  "player_name": "Adonis Frías",
                  "ranking": 837
                },
                {
                  "player_name": "Rayane Messi Tanfouri",
                  "ranking": 838
                },
                {
                  "player_name": "Kanu",
                  "ranking": 839
                }
              ],
              "lower": [
                {
                  "player_name": "Victor Bak Jensen",
                  "ranking": 841
                },
                {
                  "player_name": "Presnel Kimpembe",
                  "ranking": 842
                },
                {
                  "player_name": "Samir Sophian Chergui",
                  "ranking": 843
                },
                {
                  "player_name": "Mateusz Żukowski",
                  "ranking": 844
                },
                {
                  "player_name": "João Klauss",
                  "ranking": 845
                }
              ]
            }
          }
        },
        "Evidence Makgopa": {
          "player_id": 1022170,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 17,
          "height": 188,
          "market_value": 1300000,
          "stats": {
            "expected_goals": 0.0011,
            "goal_rate": 0.0001,
            "goals": 0,
            "shots_on_target": 0,
            "expected_assists": 0.0023,
            "key_pass": 0,
            "rating": 91.7198,
            "minutes": 25,
            "total_shots": 0,
            "duels_won": 1,
            "aerial_won": 1,
            "total_pass": 2,
            "accurate_pass": 1,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 2,
            "accurate_opp_half_passes": 1,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 4,
            "possession_lost": 1.4477,
            "dispossessed": 0.9812,
            "duels_lost": 1,
            "aerial_lost": 1,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 0,
            "challenges_lost": 1,
            "fouls": 0,
            "fouls_drawn": 0,
            "assists": 0,
            "shots_off_target": 1,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "offsides": 0,
            "ball_carries": 1,
            "total_progression": 2,
            "progressive_carries": 0,
            "bench_appearance_probability": 0.559,
            "bench_expected_minutes": 25.29,
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 85.0
          },
          "latest_10_games": [
            {
              "match_id": 15186710,
              "match_date": "2026-06-11",
              "home_team": "Mexico",
              "away_team": "South Africa",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "South Africa",
              "opponent": "Mexico",
              "stats": {
                "minutes": 14,
                "rating": 6.8,
                "assists": 0,
                "expected_assists": 0.0092,
                "total_shots": 0,
                "total_pass": 5,
                "accurate_pass": 2,
                "aerial_won": 3,
                "duels_won": 3,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "FIFA World Cup",
              "league_id": "16",
              "league_slug": "world-championship",
              "league_country": "World",
              "season_id": "58210",
              "season_name": "World Cup 2026",
              "season_year": "2026"
            },
            {
              "match_id": 14372311,
              "match_date": "2026-05-23",
              "home_team": "ORBIT College FC",
              "away_team": "Orlando Pirates",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Orlando Pirates",
              "opponent": "ORBIT College FC",
              "stats": {
                "minutes": 20,
                "rating": 6.4,
                "assists": 0,
                "expected_assists": 0.0058,
                "total_shots": 0,
                "total_pass": 12,
                "accurate_pass": 10,
                "tackles": 1,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "South African Premier Division",
              "league_id": "358",
              "league_slug": "premiership",
              "league_country": "South Africa",
              "season_id": "79701",
              "season_name": "Premiership 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14365971,
              "match_date": "2026-05-16",
              "home_team": "Orlando Pirates",
              "away_team": "Durban City FC",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Orlando Pirates",
              "opponent": "Durban City FC",
              "stats": {
                "minutes": 51,
                "rating": 6.8,
                "assists": 0,
                "expected_goals": 0.2915,
                "expected_assists": 0.0055,
                "total_shots": 2,
                "shots_off_target": 2,
                "total_pass": 13,
                "accurate_pass": 7,
                "key_pass": 2,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 1,
                "aerial_won": 5,
                "duels_won": 6,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "South African Premier Division",
              "league_id": "358",
              "league_slug": "premiership",
              "league_country": "South Africa",
              "season_id": "79701",
              "season_name": "Premiership 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14365964,
              "match_date": "2026-05-09",
              "home_team": "Magesi FC",
              "away_team": "Orlando Pirates",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Orlando Pirates",
              "opponent": "Magesi FC",
              "stats": {
                "minutes": 61,
                "rating": 6.5,
                "assists": 1,
                "expected_goals": 0.0772,
                "expected_assists": 0.005,
                "total_shots": 1,
                "total_pass": 9,
                "accurate_pass": 7,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 2,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "South African Premier Division",
              "league_id": "358",
              "league_slug": "premiership",
              "league_country": "South Africa",
              "season_id": "79701",
              "season_name": "Premiership 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 1410,
            "combined_rank_score": 187.0,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 117.0,
            "fifa_overall": 85.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 14,
            "squad_role": "substitute",
            "projected_match_rating": 6.7198,
            "source_file": "data/player_rankings.csv",
            "player_name": "Evidence Makgopa",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Renzo Machado",
                  "ranking": 1405
                },
                {
                  "player_name": "Mohamed Shehata",
                  "ranking": 1406
                },
                {
                  "player_name": "Nabil Donga",
                  "ranking": 1407
                },
                {
                  "player_name": "Anfernee Jamal Dijksteel",
                  "ranking": 1408
                },
                {
                  "player_name": "Sota Miura",
                  "ranking": 1409
                }
              ],
              "lower": [
                {
                  "player_name": "Khuliso Mudau",
                  "ranking": 1411
                },
                {
                  "player_name": "Souleymane Isaak Touré",
                  "ranking": 1412
                },
                {
                  "player_name": "Marko Soldo",
                  "ranking": 1413
                },
                {
                  "player_name": "Ayoub Khairi",
                  "ranking": 1414
                },
                {
                  "player_name": "Thiago Espinosa",
                  "ranking": 1415
                }
              ]
            }
          }
        }
      },
      "substitutes": {
        "Sipho Chaine": {
          "player_id": 903610,
          "position": "G",
          "position_depth": "G_BENCH",
          "is_starter": false,
          "shirt_number": 24,
          "height": 180,
          "market_value": 1300000,
          "stats": {
            "saves": 0,
            "goals_prevented": 0.0,
            "rating": 88.808,
            "minutes": 4,
            "total_pass": 1,
            "accurate_pass": 1,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "touches": 1,
            "clearances": 0,
            "ball_recovery": 0,
            "high_claims": 0,
            "punches": 0.0,
            "aerial_won": 0,
            "sweeper_actions": 0,
            "sweeper_accurate": 0,
            "saves_inside_box": 0,
            "possession_lost": 0.0637,
            "duels_won": 0,
            "duels_lost": 0,
            "total_contest": 0,
            "won_contest": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "total_own_half_passes": 1,
            "accurate_own_half_passes": 1,
            "total_shots": 0,
            "bench_appearance_probability": 0.109,
            "bench_expected_minutes": 4.39,
            "goals": 0,
            "projected_goals": 0,
            "goal_probability": 0.0,
            "assists": 0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "expected_goals": 0.0,
            "expected_assists": 0.0,
            "fifa_overall": 82.0
          },
          "latest_10_games": [
            {
              "match_id": 14372311,
              "match_date": "2026-05-23",
              "home_team": "ORBIT College FC",
              "away_team": "Orlando Pirates",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Orlando Pirates",
              "opponent": "ORBIT College FC",
              "stats": {
                "minutes": 90,
                "rating": 6.9,
                "assists": 0,
                "expected_assists": 0.0051,
                "total_shots": 0,
                "total_pass": 25,
                "accurate_pass": 24,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "South African Premier Division",
              "league_id": "358",
              "league_slug": "premiership",
              "league_country": "South Africa",
              "season_id": "79701",
              "season_name": "Premiership 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14365971,
              "match_date": "2026-05-16",
              "home_team": "Orlando Pirates",
              "away_team": "Durban City FC",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Orlando Pirates",
              "opponent": "Durban City FC",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assists": 0,
                "expected_assists": 0.004,
                "total_shots": 0,
                "total_pass": 27,
                "accurate_pass": 25,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 9
              },
              "has_player_stats": true,
              "league_name": "South African Premier Division",
              "league_id": "358",
              "league_slug": "premiership",
              "league_country": "South Africa",
              "season_id": "79701",
              "season_name": "Premiership 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14365964,
              "match_date": "2026-05-09",
              "home_team": "Magesi FC",
              "away_team": "Orlando Pirates",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Orlando Pirates",
              "opponent": "Magesi FC",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assists": 0,
                "expected_assists": 0.0015,
                "total_shots": 0,
                "total_pass": 30,
                "accurate_pass": 29,
                "ball_recovery": 2,
                "saves": 1,
                "goals_prevented": 0.4299
              },
              "has_player_stats": true,
              "league_name": "South African Premier Division",
              "league_id": "358",
              "league_slug": "premiership",
              "league_country": "South Africa",
              "season_id": "79701",
              "season_name": "Premiership 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 1404,
            "combined_rank_score": 296.5,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 336.0,
            "fifa_overall": 82.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 13,
            "squad_role": "substitute",
            "projected_match_rating": 6.808,
            "source_file": "data/player_rankings.csv",
            "player_name": "Sipho Chaine",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Ryoma Watanabe",
                  "ranking": 1399
                },
                {
                  "player_name": "Igor Krasnopir",
                  "ranking": 1400
                },
                {
                  "player_name": "Mostafa Shobeir",
                  "ranking": 1401
                },
                {
                  "player_name": "Youssef El Fahli",
                  "ranking": 1402
                },
                {
                  "player_name": "Juan Sforza",
                  "ranking": 1403
                }
              ],
              "lower": [
                {
                  "player_name": "Renzo Machado",
                  "ranking": 1405
                },
                {
                  "player_name": "Mohamed Shehata",
                  "ranking": 1406
                },
                {
                  "player_name": "Nabil Donga",
                  "ranking": 1407
                },
                {
                  "player_name": "Anfernee Jamal Dijksteel",
                  "ranking": 1408
                },
                {
                  "player_name": "Sota Miura",
                  "ranking": 1409
                }
              ]
            }
          }
        },
        "Samukelo Kabini": {
          "player_id": 1518180,
          "position": "D",
          "position_depth": "D_BENCH",
          "is_starter": false,
          "shirt_number": 18,
          "height": 181,
          "market_value": 2300000,
          "stats": {
            "interceptions": 0,
            "tackles": 0,
            "tackles_won": 0,
            "clearances": 0,
            "aerial_won": 0,
            "duels_won": 1,
            "rating": 87.5742,
            "minutes": 14,
            "total_pass": 6,
            "accurate_pass": 5,
            "total_shots": 0,
            "bench_appearance_probability": 0.299,
            "bench_expected_minutes": 13.57,
            "goals": 0,
            "projected_goals": 0,
            "goal_probability": 0.0,
            "assists": 0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "expected_goals": 0.0,
            "expected_assists": 0.0,
            "fifa_overall": 81.0
          },
          "latest_10_games": [],
          "ranking": {
            "global_player_rank": 963,
            "combined_rank_score": 349.5,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 452.0,
            "fifa_overall": 81.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 7,
            "squad_role": "substitute",
            "projected_match_rating": 6.5742,
            "source_file": "data/player_rankings.csv",
            "player_name": "Samukelo Kabini",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Sodiq Awujoola",
                  "ranking": 958
                },
                {
                  "player_name": "Raúl Zúñiga",
                  "ranking": 959
                },
                {
                  "player_name": "Kasper Boogaard",
                  "ranking": 960
                },
                {
                  "player_name": "Miloš Veljković",
                  "ranking": 961
                },
                {
                  "player_name": "Ioannis Pittas",
                  "ranking": 962
                }
              ],
              "lower": [
                {
                  "player_name": "Jordan García",
                  "ranking": 964
                },
                {
                  "player_name": "Ramiro Sordo",
                  "ranking": 965
                },
                {
                  "player_name": "Manu Duah",
                  "ranking": 966
                },
                {
                  "player_name": "Andrés Gudiño",
                  "ranking": 967
                },
                {
                  "player_name": "Reece James",
                  "ranking": 968
                }
              ]
            }
          }
        },
        "Olwethu Makhanya": {
          "player_id": 1415019,
          "position": "D",
          "position_depth": "D_BENCH",
          "is_starter": false,
          "shirt_number": 29,
          "height": 182,
          "market_value": 2100000,
          "stats": {
            "interceptions": 0,
            "tackles": 0,
            "tackles_won": 0,
            "clearances": 0,
            "aerial_won": 0,
            "duels_won": 1,
            "rating": 63.5742,
            "minutes": 14,
            "total_pass": 6,
            "accurate_pass": 5,
            "total_shots": 0,
            "bench_appearance_probability": 0.299,
            "bench_expected_minutes": 13.57,
            "goals": 0,
            "projected_goals": 0,
            "goal_probability": 0.0,
            "assists": 0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "expected_goals": 0.0,
            "expected_assists": 0.0,
            "fifa_overall": 57.0
          },
          "latest_10_games": [],
          "ranking": {
            "global_player_rank": 24550,
            "combined_rank_score": 8333.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 16417.0,
            "fifa_overall": 57.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 9,
            "squad_role": "substitute",
            "projected_match_rating": 6.5742,
            "source_file": "data/player_rankings.csv",
            "player_name": "Olwethu Makhanya",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Nico Cavallo",
                  "ranking": 24545
                },
                {
                  "player_name": "Kwon Hyeok Kyu",
                  "ranking": 24546
                },
                {
                  "player_name": "Yusuf Özdemir",
                  "ranking": 24547
                },
                {
                  "player_name": "Fabian Tait",
                  "ranking": 24548
                },
                {
                  "player_name": "Markus Cimermancic",
                  "ranking": 24549
                }
              ],
              "lower": [
                {
                  "player_name": "Jona Niemiec",
                  "ranking": 24551
                },
                {
                  "player_name": "Kevin Ciubotaru",
                  "ranking": 24552
                },
                {
                  "player_name": "Ayman Fallatah",
                  "ranking": 24553
                },
                {
                  "player_name": "Nimfasha Berchimas",
                  "ranking": 24554
                },
                {
                  "player_name": "Suhayb Al-Zaid",
                  "ranking": 24555
                }
              ]
            }
          }
        },
        "Tshepang Moremi": {
          "player_id": 1101745,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 11,
          "height": 180,
          "market_value": 1000000,
          "stats": {
            "key_pass": 0,
            "expected_assists": 0.0509,
            "assists": 0,
            "expected_goals": 0.0371,
            "rating": 91.4497,
            "minutes": 22,
            "total_pass": 5,
            "accurate_pass": 4,
            "ball_recovery": 1,
            "duels_won": 2,
            "total_shots": 0,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_own_half_passes": 0,
            "accurate_own_half_passes": 0,
            "total_opp_half_passes": 5,
            "accurate_opp_half_passes": 4,
            "crosses_total": 2,
            "crosses_accurate": 0,
            "touches": 9,
            "possession_lost": 2.9944,
            "dispossessed": 0.9812,
            "duels_lost": 1,
            "aerial_won": 0,
            "aerial_lost": 1,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "total_contest": 1,
            "won_contest": 1,
            "challenges_lost": 1,
            "fouls": 0,
            "fouls_drawn": 1,
            "goal_rate": 0.0,
            "goals": 0,
            "shots_on_target": 0,
            "shots_off_target": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.012,
            "ball_carries": 3,
            "total_progression": 13,
            "progressive_carries": 1,
            "bench_appearance_probability": 0.499,
            "bench_expected_minutes": 21.97,
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 85.0
          },
          "latest_10_games": [
            {
              "match_id": 14372311,
              "match_date": "2026-05-23",
              "home_team": "ORBIT College FC",
              "away_team": "Orlando Pirates",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Orlando Pirates",
              "opponent": "ORBIT College FC",
              "stats": {
                "minutes": 61,
                "rating": 6.3,
                "assists": 0,
                "expected_goals": 0.6189,
                "expected_assists": 0.234,
                "total_shots": 3,
                "shots_off_target": 2,
                "total_pass": 27,
                "accurate_pass": 21,
                "key_pass": 1,
                "aerial_won": 1,
                "duels_won": 7
              },
              "has_player_stats": true,
              "league_name": "South African Premier Division",
              "league_id": "358",
              "league_slug": "premiership",
              "league_country": "South Africa",
              "season_id": "79701",
              "season_name": "Premiership 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14365971,
              "match_date": "2026-05-16",
              "home_team": "Orlando Pirates",
              "away_team": "Durban City FC",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Orlando Pirates",
              "opponent": "Durban City FC",
              "stats": {
                "minutes": 21,
                "rating": 7.0,
                "assists": 0,
                "expected_goals": 0.0298,
                "expected_assists": 0.2135,
                "total_shots": 2,
                "shots_on_target": 2,
                "total_pass": 15,
                "accurate_pass": 12,
                "key_pass": 3
              },
              "has_player_stats": true,
              "league_name": "South African Premier Division",
              "league_id": "358",
              "league_slug": "premiership",
              "league_country": "South Africa",
              "season_id": "79701",
              "season_name": "Premiership 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 1646,
            "combined_rank_score": 196.0,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 132.0,
            "fifa_overall": 85.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 16,
            "squad_role": "substitute",
            "projected_match_rating": 6.4497,
            "source_file": "data/player_rankings.csv",
            "player_name": "Tshepang Moremi",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Luis Díaz",
                  "ranking": 1641
                },
                {
                  "player_name": "Oleksandr Andriyevskiy",
                  "ranking": 1642
                },
                {
                  "player_name": "Emiliano Rigoni",
                  "ranking": 1643
                },
                {
                  "player_name": "Adrián Alcaraz",
                  "ranking": 1644
                },
                {
                  "player_name": "Shunsuke Saito",
                  "ranking": 1645
                }
              ],
              "lower": [
                {
                  "player_name": "Everton Ribeiro",
                  "ranking": 1647
                },
                {
                  "player_name": "Mahamadou Susoho",
                  "ranking": 1648
                },
                {
                  "player_name": "Wedtoin Latif Ouedraogo",
                  "ranking": 1649
                },
                {
                  "player_name": "Matsuoka Daiki",
                  "ranking": 1650
                },
                {
                  "player_name": "Motoki Hasegawa",
                  "ranking": 1651
                }
              ]
            }
          }
        },
        "Kamogelo Sebelebele": {
          "player_id": 1210653,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 36,
          "height": 166,
          "market_value": 780000,
          "stats": {
            "key_pass": 0,
            "expected_assists": 0.0239,
            "assists": 0,
            "expected_goals": 0.0148,
            "rating": 88.6724,
            "minutes": 22,
            "total_pass": 11,
            "accurate_pass": 9,
            "ball_recovery": 1,
            "duels_won": 1,
            "total_shots": 0,
            "bench_appearance_probability": 0.499,
            "bench_expected_minutes": 21.97,
            "goals": 0,
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 82.0
          },
          "latest_10_games": [
            {
              "match_id": 14372311,
              "match_date": "2026-05-23",
              "home_team": "ORBIT College FC",
              "away_team": "Orlando Pirates",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Orlando Pirates",
              "opponent": "ORBIT College FC",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assists": 0,
                "expected_goals": 0.4412,
                "expected_assists": 0.0409,
                "total_shots": 2,
                "shots_on_target": 2,
                "total_pass": 52,
                "accurate_pass": 48,
                "tackles": 3,
                "tackles_won": 3,
                "interceptions": 3,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "South African Premier Division",
              "league_id": "358",
              "league_slug": "premiership",
              "league_country": "South Africa",
              "season_id": "79701",
              "season_name": "Premiership 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14365971,
              "match_date": "2026-05-16",
              "home_team": "Orlando Pirates",
              "away_team": "Durban City FC",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Orlando Pirates",
              "opponent": "Durban City FC",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "assists": 0,
                "expected_goals": 0.1193,
                "expected_assists": 0.0688,
                "total_shots": 3,
                "shots_off_target": 2,
                "total_pass": 53,
                "accurate_pass": 46,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 3,
                "aerial_won": 1,
                "duels_won": 5,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "South African Premier Division",
              "league_id": "358",
              "league_slug": "premiership",
              "league_country": "South Africa",
              "season_id": "79701",
              "season_name": "Premiership 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14365964,
              "match_date": "2026-05-09",
              "home_team": "Magesi FC",
              "away_team": "Orlando Pirates",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Orlando Pirates",
              "opponent": "Magesi FC",
              "stats": {
                "minutes": 90,
                "rating": 9.0,
                "goal_rate": 1.0,
                "goals": 1,
                "assists": 0,
                "expected_goals": 0.0746,
                "expected_assists": 0.0626,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 48,
                "accurate_pass": 40,
                "tackles": 7,
                "tackles_won": 5,
                "interceptions": 2,
                "clearances": 5,
                "aerial_won": 1,
                "duels_won": 11,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "South African Premier Division",
              "league_id": "358",
              "league_slug": "premiership",
              "league_country": "South Africa",
              "season_id": "79701",
              "season_name": "Premiership 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 2186,
            "combined_rank_score": 319.5,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 339.0,
            "fifa_overall": 82.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 18,
            "squad_role": "substitute",
            "projected_match_rating": 6.6724,
            "source_file": "data/player_rankings.csv",
            "player_name": "Kamogelo Sebelebele",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Oussama Benbot",
                  "ranking": 2181
                },
                {
                  "player_name": "Konrad Michalak",
                  "ranking": 2182
                },
                {
                  "player_name": "Venício Tomás",
                  "ranking": 2183
                },
                {
                  "player_name": "Federico Mateos",
                  "ranking": 2184
                },
                {
                  "player_name": "Min-ho Yoon",
                  "ranking": 2185
                }
              ],
              "lower": [
                {
                  "player_name": "Spiwe Given Msimango",
                  "ranking": 2187
                },
                {
                  "player_name": "Tsotne Kapanadze",
                  "ranking": 2188
                },
                {
                  "player_name": "Shon Weissman",
                  "ranking": 2189
                },
                {
                  "player_name": "Isaac Thelin",
                  "ranking": 2190
                },
                {
                  "player_name": "Tomoya Koyamatsu",
                  "ranking": 2191
                }
              ]
            }
          }
        },
        "Iqraam Rayners": {
          "player_id": 991024,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 13,
          "height": 176,
          "market_value": 2800000,
          "stats": {
            "expected_goals": 0.0005,
            "goal_rate": 0.0001,
            "goals": 0,
            "shots_on_target": 0,
            "expected_assists": 0.001,
            "key_pass": 0,
            "rating": 90.155,
            "minutes": 25,
            "total_shots": 0,
            "duels_won": 0,
            "aerial_won": 0,
            "total_pass": 2,
            "accurate_pass": 2,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 1,
            "accurate_opp_half_passes": 1,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 3,
            "possession_lost": 1.1719,
            "dispossessed": 0.9812,
            "duels_lost": 1,
            "aerial_lost": 2,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 0,
            "challenges_lost": 1,
            "fouls": 0,
            "fouls_drawn": 0,
            "assists": 0,
            "shots_off_target": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0248,
            "offsides": 1,
            "ball_carries": 1,
            "total_progression": 6,
            "progressive_carries": 0,
            "bench_appearance_probability": 0.559,
            "bench_expected_minutes": 25.29,
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 84.0
          },
          "latest_10_games": [
            {
              "match_id": 15186710,
              "match_date": "2026-06-11",
              "home_team": "Mexico",
              "away_team": "South Africa",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "South Africa",
              "opponent": "Mexico",
              "stats": {
                "minutes": 76,
                "rating": 6.1,
                "assists": 0,
                "expected_assists": 0.003,
                "total_shots": 0,
                "total_pass": 10,
                "accurate_pass": 9,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "FIFA World Cup",
              "league_id": "16",
              "league_slug": "world-championship",
              "league_country": "World",
              "season_id": "58210",
              "season_name": "World Cup 2026",
              "season_year": "2026"
            },
            {
              "match_id": 14365976,
              "match_date": "2026-05-12",
              "home_team": "TS Galaxy",
              "away_team": "Mamelodi Sundowns",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Mamelodi Sundowns",
              "opponent": "TS Galaxy",
              "stats": {
                "minutes": 14,
                "rating": 6.3,
                "assists": 0,
                "expected_assists": 0.0089,
                "total_shots": 0,
                "total_pass": 3,
                "accurate_pass": 3
              },
              "has_player_stats": true,
              "league_name": "South African Premier Division",
              "league_id": "358",
              "league_slug": "premiership",
              "league_country": "South Africa",
              "season_id": "79701",
              "season_name": "Premiership 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14365957,
              "match_date": "2026-05-09",
              "home_team": "Mamelodi Sundowns",
              "away_team": "Siwelele FC",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Mamelodi Sundowns",
              "opponent": "Siwelele FC",
              "stats": {
                "minutes": 23,
                "rating": 6.5,
                "assists": 0,
                "expected_assists": 0.0092,
                "total_shots": 0,
                "total_pass": 8,
                "accurate_pass": 5,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "South African Premier Division",
              "league_id": "358",
              "league_slug": "premiership",
              "league_country": "South Africa",
              "season_id": "79701",
              "season_name": "Premiership 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14500088,
              "match_date": "2026-05-06",
              "home_team": "Mamelodi Sundowns",
              "away_team": "Kaizer Chiefs",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Mamelodi Sundowns",
              "opponent": "Kaizer Chiefs",
              "stats": {
                "minutes": 10,
                "rating": 6.5,
                "assists": 0,
                "expected_goals": 0.1187,
                "expected_assists": 0.0004,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 1,
                "aerial_won": 2,
                "duels_won": 2
              },
              "has_player_stats": true,
              "league_name": "South African Premier Division",
              "league_id": "358",
              "league_slug": "premiership",
              "league_country": "South Africa",
              "season_id": "79701",
              "season_name": "Premiership 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 840,
            "combined_rank_score": 236.5,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 231.0,
            "fifa_overall": 84.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 5,
            "squad_role": "substitute",
            "projected_match_rating": 6.155,
            "source_file": "data/player_rankings.csv",
            "player_name": "Iqraam Rayners",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Tomoya Ando",
                  "ranking": 835
                },
                {
                  "player_name": "Anthoni",
                  "ranking": 836
                },
                {
                  "player_name": "Adonis Frías",
                  "ranking": 837
                },
                {
                  "player_name": "Rayane Messi Tanfouri",
                  "ranking": 838
                },
                {
                  "player_name": "Kanu",
                  "ranking": 839
                }
              ],
              "lower": [
                {
                  "player_name": "Victor Bak Jensen",
                  "ranking": 841
                },
                {
                  "player_name": "Presnel Kimpembe",
                  "ranking": 842
                },
                {
                  "player_name": "Samir Sophian Chergui",
                  "ranking": 843
                },
                {
                  "player_name": "Mateusz Żukowski",
                  "ranking": 844
                },
                {
                  "player_name": "João Klauss",
                  "ranking": 845
                }
              ]
            }
          }
        },
        "Evidence Makgopa": {
          "player_id": 1022170,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 17,
          "height": 188,
          "market_value": 1300000,
          "stats": {
            "expected_goals": 0.0011,
            "goal_rate": 0.0001,
            "goals": 0,
            "shots_on_target": 0,
            "expected_assists": 0.0023,
            "key_pass": 0,
            "rating": 91.7198,
            "minutes": 25,
            "total_shots": 0,
            "duels_won": 1,
            "aerial_won": 1,
            "total_pass": 2,
            "accurate_pass": 1,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 2,
            "accurate_opp_half_passes": 1,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 4,
            "possession_lost": 1.4477,
            "dispossessed": 0.9812,
            "duels_lost": 1,
            "aerial_lost": 1,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 0,
            "challenges_lost": 1,
            "fouls": 0,
            "fouls_drawn": 0,
            "assists": 0,
            "shots_off_target": 1,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "offsides": 0,
            "ball_carries": 1,
            "total_progression": 2,
            "progressive_carries": 0,
            "bench_appearance_probability": 0.559,
            "bench_expected_minutes": 25.29,
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 85.0
          },
          "latest_10_games": [
            {
              "match_id": 15186710,
              "match_date": "2026-06-11",
              "home_team": "Mexico",
              "away_team": "South Africa",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "South Africa",
              "opponent": "Mexico",
              "stats": {
                "minutes": 14,
                "rating": 6.8,
                "assists": 0,
                "expected_assists": 0.0092,
                "total_shots": 0,
                "total_pass": 5,
                "accurate_pass": 2,
                "aerial_won": 3,
                "duels_won": 3,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "FIFA World Cup",
              "league_id": "16",
              "league_slug": "world-championship",
              "league_country": "World",
              "season_id": "58210",
              "season_name": "World Cup 2026",
              "season_year": "2026"
            },
            {
              "match_id": 14372311,
              "match_date": "2026-05-23",
              "home_team": "ORBIT College FC",
              "away_team": "Orlando Pirates",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Orlando Pirates",
              "opponent": "ORBIT College FC",
              "stats": {
                "minutes": 20,
                "rating": 6.4,
                "assists": 0,
                "expected_assists": 0.0058,
                "total_shots": 0,
                "total_pass": 12,
                "accurate_pass": 10,
                "tackles": 1,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "South African Premier Division",
              "league_id": "358",
              "league_slug": "premiership",
              "league_country": "South Africa",
              "season_id": "79701",
              "season_name": "Premiership 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14365971,
              "match_date": "2026-05-16",
              "home_team": "Orlando Pirates",
              "away_team": "Durban City FC",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Orlando Pirates",
              "opponent": "Durban City FC",
              "stats": {
                "minutes": 51,
                "rating": 6.8,
                "assists": 0,
                "expected_goals": 0.2915,
                "expected_assists": 0.0055,
                "total_shots": 2,
                "shots_off_target": 2,
                "total_pass": 13,
                "accurate_pass": 7,
                "key_pass": 2,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 1,
                "aerial_won": 5,
                "duels_won": 6,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "South African Premier Division",
              "league_id": "358",
              "league_slug": "premiership",
              "league_country": "South Africa",
              "season_id": "79701",
              "season_name": "Premiership 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14365964,
              "match_date": "2026-05-09",
              "home_team": "Magesi FC",
              "away_team": "Orlando Pirates",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Orlando Pirates",
              "opponent": "Magesi FC",
              "stats": {
                "minutes": 61,
                "rating": 6.5,
                "assists": 1,
                "expected_goals": 0.0772,
                "expected_assists": 0.005,
                "total_shots": 1,
                "total_pass": 9,
                "accurate_pass": 7,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 2,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "South African Premier Division",
              "league_id": "358",
              "league_slug": "premiership",
              "league_country": "South Africa",
              "season_id": "79701",
              "season_name": "Premiership 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 1410,
            "combined_rank_score": 187.0,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 117.0,
            "fifa_overall": 85.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 14,
            "squad_role": "substitute",
            "projected_match_rating": 6.7198,
            "source_file": "data/player_rankings.csv",
            "player_name": "Evidence Makgopa",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Renzo Machado",
                  "ranking": 1405
                },
                {
                  "player_name": "Mohamed Shehata",
                  "ranking": 1406
                },
                {
                  "player_name": "Nabil Donga",
                  "ranking": 1407
                },
                {
                  "player_name": "Anfernee Jamal Dijksteel",
                  "ranking": 1408
                },
                {
                  "player_name": "Sota Miura",
                  "ranking": 1409
                }
              ],
              "lower": [
                {
                  "player_name": "Khuliso Mudau",
                  "ranking": 1411
                },
                {
                  "player_name": "Souleymane Isaak Touré",
                  "ranking": 1412
                },
                {
                  "player_name": "Marko Soldo",
                  "ranking": 1413
                },
                {
                  "player_name": "Ayoub Khairi",
                  "ranking": 1414
                },
                {
                  "player_name": "Thiago Espinosa",
                  "ranking": 1415
                }
              ]
            }
          }
        }
      },
      "team_totals": {
        "projected_goals": 0,
        "expected_goals": 0.68,
        "expected_assists": 0.62,
        "total_shots": 8,
        "shots_on_target": 9,
        "total_passes": 371,
        "interceptions": 7,
        "tackles": 18,
        "avg_rating": 86.43,
        "possession_estimated_pct": 49.8,
        "pressing_actions_per_90": 6.0
      }
    }
  },
  "antagonist_report": {
    "home_attacking_duels": [
      {
        "attacker": "Patrik Schick",
        "attacker_role": "ST",
        "attacker_market_value": 16600000,
        "attacker_height": 191,
        "attacker_skill_quality": 0.596,
        "defenders": [
          "Mbekezeli Mbokazi",
          "Ime Okon"
        ],
        "defender_roles": [
          "CB",
          "CB"
        ],
        "def_skill_quality_avg": 0.436,
        "duel_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "numerical_situation": "1v2",
        "duel_win_rate": 0.302,
        "xg_contribution": 0.1729,
        "shots_in_zone": 2.5,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.5,
        "aerial_duels": 3,
        "aerial_won": 2.0,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.4,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Mbekezeli Mbokazi",
            "role": "CB",
            "market_value": 3800000,
            "tackles_attempted": 1.0,
            "tackles_won": 1.0,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.6,
            "aerial_duels_won": 0.5,
            "defensive_success_rate": 0.698
          },
          {
            "player": "Ime Okon",
            "role": "CB",
            "market_value": 1900000,
            "tackles_attempted": 1.0,
            "tackles_won": 1.0,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.6,
            "aerial_duels_won": 0.5,
            "defensive_success_rate": 0.698
          }
        ],
        "duel_analysis": "Patrik Schick (ST) is heavily outmatched defensively against Mbekezeli Mbokazi and Ime Okon in a 2-defender block. Duel win probability: 30%.  Projected xG contribution: 0.173 — with very limited chance creation expected."
      },
      {
        "attacker": "Adam Hložek",
        "attacker_role": "SS",
        "attacker_market_value": 10300000,
        "attacker_height": 186,
        "attacker_skill_quality": 0.526,
        "defenders": [
          "Thalente Mbatha",
          "Mbekezeli Mbokazi"
        ],
        "defender_roles": [
          "CDM",
          "CB"
        ],
        "def_skill_quality_avg": 0.437,
        "duel_zone": "Shadow Striker vs CDM + CB — Zone 14 Battle",
        "numerical_situation": "1v2",
        "duel_win_rate": 0.366,
        "xg_contribution": 0.1408,
        "shots_in_zone": 2.2,
        "dribbles_attempted": 3,
        "dribbles_successful": 1.0,
        "aerial_duels": 2,
        "aerial_won": 1.2,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.3,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Thalente Mbatha",
            "role": "CDM",
            "market_value": 2100000,
            "tackles_attempted": 1.0,
            "tackles_won": 0.9,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 0.4,
            "defensive_success_rate": 0.634
          },
          {
            "player": "Mbekezeli Mbokazi",
            "role": "CB",
            "market_value": 3800000,
            "tackles_attempted": 1.0,
            "tackles_won": 0.9,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 0.4,
            "defensive_success_rate": 0.634
          }
        ],
        "duel_analysis": "Adam Hložek (SS) faces tough defensive resistance against Thalente Mbatha and Mbekezeli Mbokazi in a 2-defender block. Duel win probability: 37%.  Projected xG contribution: 0.141 — and is restricted in space and time on the ball."
      },
      {
        "attacker": "Alexandr Sojka",
        "attacker_role": "LWB",
        "attacker_market_value": 2200000,
        "attacker_height": 178,
        "attacker_skill_quality": 0.427,
        "defenders": [
          "Khuliso Mudau"
        ],
        "defender_roles": [
          "RB"
        ],
        "def_skill_quality_avg": 0.416,
        "duel_zone": "Left Wingback vs Right Back — Overlapping Run",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.393,
        "xg_contribution": 0.1071,
        "shots_in_zone": 1.0,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.7,
        "aerial_duels": 2,
        "aerial_won": 1.0,
        "crosses_in_zone": 2.2,
        "fouls_drawn": 1.2,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Khuliso Mudau",
            "role": "RB",
            "market_value": 1300000,
            "tackles_attempted": 1.9,
            "tackles_won": 1.7,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 1.0,
            "defensive_success_rate": 0.607
          }
        ],
        "duel_analysis": "Alexandr Sojka (LWB) faces tough defensive resistance against Khuliso Mudau in a direct 1v1 contest. Duel win probability: 39%.  Projected xG contribution: 0.107 — and is restricted in space and time on the ball."
      },
      {
        "attacker": "Tomáš Holeš",
        "attacker_role": "RWB",
        "attacker_market_value": 1000000,
        "attacker_height": 180,
        "attacker_skill_quality": 0.412,
        "defenders": [
          "Aubrey Modiba"
        ],
        "defender_roles": [
          "LB"
        ],
        "def_skill_quality_avg": 0.424,
        "duel_zone": "Right Wingback vs Left Back — Overlapping Run",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.447,
        "xg_contribution": 0.6919,
        "shots_in_zone": 1.0,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.8,
        "aerial_duels": 2,
        "aerial_won": 1.1,
        "crosses_in_zone": 2.1,
        "fouls_drawn": 1.1,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Aubrey Modiba",
            "role": "LB",
            "market_value": 1900000,
            "tackles_attempted": 1.9,
            "tackles_won": 1.6,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 0.9,
            "defensive_success_rate": 0.553
          }
        ],
        "duel_analysis": "Tomáš Holeš (RWB) is evenly matched against Aubrey Modiba in a direct 1v1 contest. Duel win probability: 45%.  Projected xG contribution: 0.692 — with neither side clearly dominant."
      },
      {
        "attacker": "Tomáš Souček",
        "attacker_role": "CM",
        "attacker_market_value": 9700000,
        "attacker_height": 192,
        "attacker_skill_quality": 0.519,
        "defenders": [
          "Thalente Mbatha"
        ],
        "defender_roles": [
          "CDM"
        ],
        "def_skill_quality_avg": 0.426,
        "duel_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.552,
        "xg_contribution": 0.2481,
        "shots_in_zone": 1.9,
        "dribbles_attempted": 2,
        "dribbles_successful": 1.0,
        "aerial_duels": 2,
        "aerial_won": 1.4,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.0,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Thalente Mbatha",
            "role": "CDM",
            "market_value": 2100000,
            "tackles_attempted": 1.9,
            "tackles_won": 1.4,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 0.6,
            "defensive_success_rate": 0.448
          }
        ],
        "duel_analysis": "Tomáš Souček (CM) is slightly favored against Thalente Mbatha in a direct 1v1 contest. Duel win probability: 55%.  Projected xG contribution: 0.248 — creating consistent moderate threat."
      }
    ],
    "away_attacking_duels": [
      {
        "attacker": "Teboho Mokoena",
        "attacker_role": "LW",
        "attacker_market_value": 3100000,
        "attacker_height": 176,
        "attacker_skill_quality": 0.439,
        "defenders": [
          "Ladislav Krejčí"
        ],
        "defender_roles": [
          "CB"
        ],
        "def_skill_quality_avg": 0.641,
        "duel_zone": "LW vs CB",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.269,
        "xg_contribution": 0.0765,
        "shots_in_zone": 1.4,
        "dribbles_attempted": 3,
        "dribbles_successful": 0.7,
        "aerial_duels": 2,
        "aerial_won": 0.9,
        "crosses_in_zone": 1.9,
        "fouls_drawn": 1.3,
        "pressing_intensity_on_attacker": "MEDIUM",
        "defender_stats": [
          {
            "player": "Ladislav Krejčí",
            "role": "CB",
            "market_value": 21000000,
            "tackles_attempted": 2.1,
            "tackles_won": 2.2,
            "fouls_committed": 0.5,
            "interceptions_in_zone": 1.0,
            "clearances_in_zone": 0.9,
            "aerial_duels_won": 1.1,
            "defensive_success_rate": 0.731
          }
        ],
        "duel_analysis": "Teboho Mokoena (LW) is heavily outmatched defensively against Ladislav Krejčí in a direct 1v1 contest. Duel win probability: 27%. The quality gap is significant (€3M vs €21M avg). Projected xG contribution: 0.076 — with very limited chance creation expected."
      },
      {
        "attacker": "Relebohile Mofokeng",
        "attacker_role": "CAM",
        "attacker_market_value": 2900000,
        "attacker_height": 166,
        "attacker_skill_quality": 0.436,
        "defenders": [
          "Tomáš Souček"
        ],
        "defender_roles": [
          "CM"
        ],
        "def_skill_quality_avg": 0.519,
        "duel_zone": "CAM vs CM",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.323,
        "xg_contribution": 0.1376,
        "shots_in_zone": 1.9,
        "dribbles_attempted": 3,
        "dribbles_successful": 0.9,
        "aerial_duels": 2,
        "aerial_won": 0.7,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.3,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Tomáš Souček",
            "role": "CM",
            "market_value": 9700000,
            "tackles_attempted": 2.0,
            "tackles_won": 2.0,
            "fouls_committed": 0.5,
            "interceptions_in_zone": 0.8,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 1.3,
            "defensive_success_rate": 0.677
          }
        ],
        "duel_analysis": "Relebohile Mofokeng (CAM) faces tough defensive resistance against Tomáš Souček in a direct 1v1 contest. Duel win probability: 32%.  Projected xG contribution: 0.138 — and is restricted in space and time on the ball."
      },
      {
        "attacker": "Oswin Appollis",
        "attacker_role": "RW",
        "attacker_market_value": 2700000,
        "attacker_height": 172,
        "attacker_skill_quality": 0.434,
        "defenders": [
          "Ladislav Krejčí"
        ],
        "defender_roles": [
          "CB"
        ],
        "def_skill_quality_avg": 0.641,
        "duel_zone": "RW vs CB",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.267,
        "xg_contribution": 0.1077,
        "shots_in_zone": 1.4,
        "dribbles_attempted": 3,
        "dribbles_successful": 0.7,
        "aerial_duels": 2,
        "aerial_won": 0.8,
        "crosses_in_zone": 1.9,
        "fouls_drawn": 1.3,
        "pressing_intensity_on_attacker": "MEDIUM",
        "defender_stats": [
          {
            "player": "Ladislav Krejčí",
            "role": "CB",
            "market_value": 21000000,
            "tackles_attempted": 2.1,
            "tackles_won": 2.2,
            "fouls_committed": 0.5,
            "interceptions_in_zone": 1.0,
            "clearances_in_zone": 0.9,
            "aerial_duels_won": 1.1,
            "defensive_success_rate": 0.733
          }
        ],
        "duel_analysis": "Oswin Appollis (RW) is heavily outmatched defensively against Ladislav Krejčí in a direct 1v1 contest. Duel win probability: 27%. The quality gap is significant (€3M vs €21M avg). Projected xG contribution: 0.108 — with very limited chance creation expected."
      },
      {
        "attacker": "Lyle Foster",
        "attacker_role": "ST",
        "attacker_market_value": 8300000,
        "attacker_height": 180,
        "attacker_skill_quality": 0.502,
        "defenders": [
          "Ladislav Krejčí",
          "Robin Hranáč"
        ],
        "defender_roles": [
          "CB",
          "CB"
        ],
        "def_skill_quality_avg": 0.587,
        "duel_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "numerical_situation": "1v2",
        "duel_win_rate": 0.18,
        "xg_contribution": 0.0195,
        "shots_in_zone": 2.0,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.3,
        "aerial_duels": 3,
        "aerial_won": 1.6,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.5,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Ladislav Krejčí",
            "role": "CB",
            "market_value": 21000000,
            "tackles_attempted": 1.1,
            "tackles_won": 1.2,
            "fouls_committed": 0.5,
            "interceptions_in_zone": 1.0,
            "clearances_in_zone": 0.9,
            "aerial_duels_won": 0.7,
            "defensive_success_rate": 0.82
          },
          {
            "player": "Robin Hranáč",
            "role": "CB",
            "market_value": 10900000,
            "tackles_attempted": 1.0,
            "tackles_won": 1.1,
            "fouls_committed": 0.5,
            "interceptions_in_zone": 0.9,
            "clearances_in_zone": 0.7,
            "aerial_duels_won": 0.7,
            "defensive_success_rate": 0.82
          }
        ],
        "duel_analysis": "Lyle Foster (ST) is heavily outmatched defensively against Ladislav Krejčí and Robin Hranáč in a 2-defender block. Duel win probability: 18%.  Projected xG contribution: 0.020 — with very limited chance creation expected."
      }
    ],
    "midfield_battle": {
      "home_midfield_power": 0.448,
      "away_midfield_power": 0.482,
      "home_creative_power": 0.466,
      "away_creative_power": 0.419,
      "home_defensive_power": 0.441,
      "away_defensive_power": 0.365,
      "home_dominance_ratio": 0.482,
      "home_midfield_count": 2,
      "away_midfield_count": 5,
      "home_midfield_players": [
        "Alexandr Sojka",
        "Tomáš Souček"
      ],
      "away_midfield_players": [
        "Oswin Appollis",
        "Teboho Mokoena",
        "Thalente Mbatha",
        "Jayden Adams",
        "Relebohile Mofokeng"
      ],
      "possession_advantage": "neutral",
      "estimated_possession_home_pct": 50.2,
      "estimated_possession_away_pct": 49.8,
      "home_pressing_actions_per_90": 6.4,
      "away_pressing_actions_per_90": 6.0,
      "home_key_passes_projected": 4.3,
      "away_key_passes_projected": 4.0,
      "home_throughball_threat": 2.0,
      "away_throughball_threat": 1.9,
      "key_personal_duel": "Tomáš Souček vs Teboho Mokoena",
      "midfield_lambda_factor_home": 1.005,
      "midfield_lambda_factor_away": 1.002
    },
    "formation_analysis": {
      "home_formation": "3-4-2-1",
      "away_formation": "4-2-3-1",
      "home_tactical_bonus": -0.05,
      "away_tactical_bonus": 0.05,
      "formation_verdict": "Tactical parity between 3-4-2-1 and 4-2-3-1. Match outcome driven primarily by individual player quality."
    },
    "home_lambda": 1.966,
    "away_lambda": 0.681,
    "home_top_threat_zones": [
      "Right Wingback vs Left Back — Overlapping Run",
      "Central Mid vs Defensive Mid — Pressing/Creation Duel"
    ],
    "away_top_threat_zones": [
      "CAM vs CM",
      "RW vs CB"
    ],
    "home_player_antagonists": {
      "Patrik Schick": {
        "opponents": [
          "Mbekezeli Mbokazi",
          "Ime Okon"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "attacking_duel"
      },
      "Adam Hložek": {
        "opponents": [
          "Thalente Mbatha",
          "Mbekezeli Mbokazi"
        ],
        "primary_zone": "Shadow Striker vs CDM + CB — Zone 14 Battle",
        "source": "attacking_duel"
      },
      "Alexandr Sojka": {
        "opponents": [
          "Khuliso Mudau",
          "Thalente Mbatha",
          "Teboho Mokoena"
        ],
        "primary_zone": "Left Wingback vs Right Back — Overlapping Run",
        "source": "attacking_duel, midfield_pairing"
      },
      "Tomáš Holeš": {
        "opponents": [
          "Aubrey Modiba"
        ],
        "primary_zone": "Right Wingback vs Left Back — Overlapping Run",
        "source": "attacking_duel"
      },
      "Tomáš Souček": {
        "opponents": [
          "Thalente Mbatha",
          "Relebohile Mofokeng",
          "Jayden Adams",
          "Oswin Appollis"
        ],
        "primary_zone": "Central Mid vs Defensive Mid — Pressing/Creation Duel",
        "source": "attacking_duel, defensive_duel, midfield_pairing"
      },
      "Ladislav Krejčí": {
        "opponents": [
          "Teboho Mokoena",
          "Oswin Appollis",
          "Lyle Foster"
        ],
        "primary_zone": "LW vs CB",
        "source": "defensive_duel"
      },
      "Robin Hranáč": {
        "opponents": [
          "Lyle Foster"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "defensive_duel"
      },
      "Matěj Kovář": {
        "opponents": [
          "Lyle Foster",
          "Relebohile Mofokeng"
        ],
        "primary_zone": "Shape fallback",
        "source": "formation_fallback"
      },
      "Jaroslav Zelený": {
        "opponents": [
          "Lyle Foster"
        ],
        "primary_zone": "Shape fallback",
        "source": "formation_fallback"
      },
      "Lukáš Provod": {
        "opponents": [
          "Aubrey Modiba",
          "Ime Okon"
        ],
        "primary_zone": "Shape fallback",
        "source": "formation_fallback"
      },
      "Vladimír Coufal": {
        "opponents": [
          "Lyle Foster"
        ],
        "primary_zone": "Shape fallback",
        "source": "formation_fallback"
      }
    },
    "away_player_antagonists": {
      "Mbekezeli Mbokazi": {
        "opponents": [
          "Patrik Schick",
          "Adam Hložek"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "defensive_duel"
      },
      "Ime Okon": {
        "opponents": [
          "Patrik Schick"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "defensive_duel"
      },
      "Thalente Mbatha": {
        "opponents": [
          "Adam Hložek",
          "Tomáš Souček",
          "Alexandr Sojka"
        ],
        "primary_zone": "Shadow Striker vs CDM + CB — Zone 14 Battle",
        "source": "defensive_duel, midfield_pairing"
      },
      "Khuliso Mudau": {
        "opponents": [
          "Alexandr Sojka"
        ],
        "primary_zone": "Left Wingback vs Right Back — Overlapping Run",
        "source": "defensive_duel"
      },
      "Aubrey Modiba": {
        "opponents": [
          "Tomáš Holeš"
        ],
        "primary_zone": "Right Wingback vs Left Back — Overlapping Run",
        "source": "defensive_duel"
      },
      "Teboho Mokoena": {
        "opponents": [
          "Ladislav Krejčí",
          "Alexandr Sojka"
        ],
        "primary_zone": "LW vs CB",
        "source": "attacking_duel, midfield_pairing"
      },
      "Relebohile Mofokeng": {
        "opponents": [
          "Tomáš Souček"
        ],
        "primary_zone": "CAM vs CM",
        "source": "attacking_duel, midfield_pairing"
      },
      "Oswin Appollis": {
        "opponents": [
          "Ladislav Krejčí",
          "Tomáš Souček"
        ],
        "primary_zone": "RW vs CB",
        "source": "attacking_duel, midfield_pairing"
      },
      "Lyle Foster": {
        "opponents": [
          "Ladislav Krejčí",
          "Robin Hranáč"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "attacking_duel"
      },
      "Jayden Adams": {
        "opponents": [
          "Tomáš Souček"
        ],
        "primary_zone": "Midfield lane",
        "source": "midfield_pairing"
      },
      "Ronwen Williams": {
        "opponents": [
          "Lukáš Provod",
          "Patrik Schick"
        ],
        "primary_zone": "Shape fallback",
        "source": "formation_fallback"
      }
    },
    "key_tactical_insight": "Midfield is evenly contested — Tomáš Souček vs Teboho Mokoena will be the pivotal duel. Total antagonist xG — Home: 1.36, Away: 0.34. Home danger zone: Right Wingback vs Left Back — Overlapping Run. Away danger zone: CAM vs CM.",
    "lambda_factors": {
      "home_gk_opposition_factor": 1.0218,
      "away_gk_opposition_factor": 0.9841,
      "home_set_piece_bonus": 0.18,
      "away_set_piece_bonus": 0.046,
      "home_defensive_solidity_vs": 1.0046,
      "away_defensive_solidity_vs": 0.9802,
      "home_midfield_factor": 1.005,
      "away_midfield_factor": 1.002,
      "stage_discount": 1.0,
      "quality_gap_applied": true,
      "home_avg_quality": 0.4986,
      "away_avg_quality": 0.4372,
      "avg_quality_gap": 0.0614,
      "squad_value_gap_log": 0.838,
      "top5_value_gap_log": 0.9356,
      "attack_value_gap_log": 0.5967,
      "elite_count_gap": 0,
      "combined_quality_gap": 0.1128,
      "stronger_lambda_boost": 0.2481,
      "weaker_lambda_suppression": 0.1579,
      "home_bench_lambda_bonus": 0.0707,
      "away_bench_lambda_bonus": 0.0315,
      "home_bench_players_modelled": 7,
      "away_bench_players_modelled": 7,
      "mismatch_score_pressure_applied": false,
      "competitive_underdog_floor_applied": false,
      "pre_calibration_home_lambda": 1.9657,
      "pre_calibration_away_lambda": 0.6815,
      "competition_calibration_applied": false,
      "competition_calibration_reason": "no_sofascore_matches_data",
      "competition_calibration_samples": 0,
      "competition_observed_total_goals": 0.0,
      "competition_calibration_scale": 1.0,
      "neutral_share_preserved": true,
      "final_home_lambda": 1.966,
      "final_away_lambda": 0.681
    }
  },
  "home_standing": {
    "available": false,
    "team_position": null,
    "opponent_position": null,
    "standing_lambda_multiplier": 1.0,
    "attack_index": null,
    "defense_concede_index": null,
    "form_multiplier": null,
    "team_attack_rate_contextual": null,
    "opp_defense_rate_contextual": null,
    "team_ppg": null,
    "opponent_ppg": null
  },
  "away_standing": {
    "available": false,
    "team_position": null,
    "opponent_position": null,
    "standing_lambda_multiplier": 1.0,
    "attack_index": null,
    "defense_concede_index": null,
    "form_multiplier": null,
    "team_attack_rate_contextual": null,
    "opp_defense_rate_contextual": null,
    "team_ppg": null,
    "opponent_ppg": null
  },
  "timestamp": "2026-06-18T13:38:58Z"
}