{
  "match_info": {
    "home_team": "New Zealand",
    "away_team": "Egypt",
    "tournament": "FIFA World Cup",
    "date": "20260621",
    "timezone": "America/New_York",
    "home_formation": "4-2-3-1",
    "away_formation": "4-2-3-1"
  },
  "prediction": {
    "most_likely_score": "1-1",
    "home_goals": 1,
    "away_goals": 1,
    "most_likely_score_probability": 0.1153,
    "top_5_scorelines": [
      {
        "score": "1-1",
        "probability": 0.1153
      },
      {
        "score": "0-1",
        "probability": 0.1089
      },
      {
        "score": "1-2",
        "probability": 0.0967
      },
      {
        "score": "0-2",
        "probability": 0.0921
      },
      {
        "score": "1-0",
        "probability": 0.0677
      }
    ],
    "scoreline_probabilities": {
      "0-0": 0.0654,
      "0-1": 0.1089,
      "0-2": 0.0921,
      "0-3": 0.0517,
      "0-4": 0.0218,
      "0-5": 0.0073,
      "0-6": 0.0021,
      "1-0": 0.0677,
      "1-1": 0.1153,
      "1-2": 0.0967,
      "1-3": 0.0543,
      "1-4": 0.0229,
      "1-5": 0.0077,
      "1-6": 0.0022,
      "1-7": 0.0005,
      "2-0": 0.0358,
      "2-1": 0.0603,
      "2-2": 0.0508,
      "2-3": 0.0285,
      "2-4": 0.012,
      "2-5": 0.004,
      "2-6": 0.0011,
      "3-0": 0.0125,
      "3-1": 0.0211,
      "3-2": 0.0178,
      "3-3": 0.01,
      "3-4": 0.0042,
      "3-5": 0.0014,
      "4-0": 0.0033,
      "4-1": 0.0055,
      "4-2": 0.0047,
      "4-3": 0.0026,
      "4-4": 0.0011,
      "5-0": 0.0007,
      "5-1": 0.0012,
      "5-2": 0.001,
      "5-3": 0.0006
    },
    "outcome": {
      "home_win": 0.2356,
      "draw": 0.2426,
      "away_win": 0.5218
    },
    "markets": {
      "over_2_5_goals": 0.5149,
      "under_2_5_goals": 0.4851,
      "btts_yes": 0.53,
      "btts_no": 0.47,
      "home_clean_sheet": 0.1854,
      "away_clean_sheet": 0.3499
    },
    "home_ratings": {
      "DR": 73.61,
      "MCR": 78.16,
      "ATR": 88.47,
      "GK": 71.65
    },
    "away_ratings": {
      "DR": 88.2,
      "MCR": 90.35,
      "ATR": 91.3,
      "GK": 89.27
    },
    "insights": {
      "summary": "Antagonist matchup analysis for New Zealand vs Egypt. Most likely scoreline: 1-1. Lambdas derived from 5 home and 5 away individual player duels.",
      "key_player": "Projected scorer(s): Elijah Just, Omar Marmoush",
      "tactical_analysis": "Tactical parity between 4-2-3-1 and 4-2-3-1. Match outcome driven primarily by individual player quality. Midfield is evenly contested — Joe Bell vs Mohamed Salah will be the pivotal duel. Total antagonist xG — Home: 0.74, Away: 1.01. Home danger zone: Right Wing vs Left Back — Flank Battle. Away danger zone: Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle."
    },
    "confidence": 0.76,
    "home_lambda": 1.05,
    "away_lambda": 1.685
  },
  "pregame_baseline": {
    "fair_win_probability": {
      "home_win": 0.2356,
      "draw": 0.2426,
      "away_win": 0.5218
    },
    "favorite": "Egypt",
    "favorite_win_probability": 0.5218,
    "fair_spread": -0.635,
    "fair_total": 2.735,
    "prop_estimates": [
      {
        "market": "team_total_goals",
        "selection": "New Zealand",
        "estimate": 1.05,
        "probability": null,
        "unit": "goals"
      },
      {
        "market": "team_total_goals",
        "selection": "Egypt",
        "estimate": 1.685,
        "probability": null,
        "unit": "goals"
      },
      {
        "market": "over_2_5_goals",
        "selection": "yes",
        "estimate": 2.5,
        "probability": 0.5149,
        "unit": "probability"
      },
      {
        "market": "both_teams_to_score",
        "selection": "yes",
        "estimate": 1.0,
        "probability": 0.53,
        "unit": "probability"
      },
      {
        "market": "clean_sheet",
        "selection": "New Zealand",
        "estimate": 1.0,
        "probability": 0.1854,
        "unit": "probability"
      },
      {
        "market": "clean_sheet",
        "selection": "Egypt",
        "estimate": 1.0,
        "probability": 0.3499,
        "unit": "probability"
      },
      {
        "market": "anytime_goal",
        "selection": "Finn Surman (New Zealand)",
        "estimate": 0.3873,
        "probability": 0.0764,
        "unit": "xG"
      },
      {
        "market": "anytime_goal",
        "selection": "Omar Marmoush (Egypt)",
        "estimate": 0.5208,
        "probability": 0.4136,
        "unit": "xG"
      },
      {
        "market": "assist",
        "selection": "Elijah Just (New Zealand)",
        "estimate": 0.1027,
        "probability": 0.0,
        "unit": "xA"
      },
      {
        "market": "assist",
        "selection": "Ahmed Fatouh (Egypt)",
        "estimate": 0.1498,
        "probability": 0.0,
        "unit": "xA"
      }
    ],
    "expected_pace": {
      "tempo": "balanced",
      "expected_total_goals": 2.735,
      "expected_total_shots": 25,
      "expected_total_passes": 836,
      "expected_pressing_actions_per_90": 12.7,
      "possession_home_pct": 49.3,
      "possession_away_pct": 50.7,
      "notes": "possession projects near even"
    },
    "expected_game_script": {
      "favorite": "Egypt",
      "favorite_win_probability": 0.5218,
      "script": "Egypt is the fair winner side, but the baseline remains narrow: fair spread -0.64 goals and fair total 2.73.",
      "first_half": "Expect balanced tempo while both sides test the matchup thesis; shot baseline is about 12 first-half attempts.",
      "second_half": "If level after halftime, midfield control and bench quality should decide territory; New Zealand must keep the match inside one goal.",
      "late_game": "A Egypt lead likely shifts toward control and counters; a draw state keeps set pieces and transition chances live."
    },
    "key_matchup_thesis": "Egypt chance creation leans on Omar Marmoush against Michael Boxall, Finn Surman in Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle; possession projects near even.",
    "expected_rotation_usage_behavior": [
      "New Zealand: starters carry the main goal usage through Elijah Just; bench watchlist: Tyler Bindon, Benjamin Old, Jesse Randall.",
      "Egypt: starters carry the main goal usage through Omar Marmoush; bench watchlist: Mahmoud Trézéguet, Haissem Hassan, Zizo.",
      "Assist usage should flow through the projected key-pass leaders; late lineup changes should re-score these allocations."
    ],
    "pregame_play_by_play": [
      "0-15: Egypt tries to establish the projected edge; track possession and first-shot share.",
      "15-45: Baseline expects balanced tempo, about 12 total first-half shots, and 1.37 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 New Zealand is chasing, transition and set-piece volume become the primary live deviation signal."
    ],
    "invalidation_triggers": [
      "Early red card, injury, or goalkeeper change for Egypt.",
      "New Zealand 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": {
    "New Zealand": {
      "formation": "4-2-3-1",
      "players": {
        "Chris Wood": {
          "player_id": 50480,
          "position": "F",
          "position_depth": "F",
          "is_starter": true,
          "shirt_number": 9,
          "height": 191,
          "market_value": 5200000,
          "stats": {
            "expected_goals": 0.1422,
            "goal_rate": 0.0004,
            "goals": 0,
            "shots_on_target": 1,
            "expected_assists": 0.0778,
            "key_pass": 3,
            "rating": 88.4659,
            "minutes": 80,
            "total_shots": 2,
            "duels_won": 2,
            "aerial_won": 2,
            "total_pass": 15,
            "accurate_pass": 12,
            "total_long_balls": 1,
            "accurate_long_balls": 1,
            "total_opp_half_passes": 7,
            "accurate_opp_half_passes": 4,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 19,
            "possession_lost": 9.5674,
            "dispossessed": 1.4841,
            "duels_lost": 5,
            "aerial_lost": 3,
            "total_contest": 1,
            "won_contest": 0,
            "ball_recovery": 2,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 1,
            "assists": 0,
            "shots_off_target": 1,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 3,
            "blocks": 1,
            "big_chances_created": 2,
            "big_chances_missed": 1,
            "xgot": 0.4848,
            "offsides": 1,
            "ball_carries": 4,
            "total_progression": 24,
            "progressive_carries": 1,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.5,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.258,
            "pressing_faced": "LOW",
            "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
            "numerical_situation": "1v2",
            "opponent_defenders": "Yasser Ibrahim, Mohamed Hany",
            "opponent_faced": "Yasser Ibrahim, Mohamed Hany",
            "antagonist_source": "attacking_duel",
            "projected_goals": 0,
            "goal_probability": 0.2329,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 82.0
          },
          "latest_10_games": [
            {
              "match_id": 15186832,
              "match_date": "2026-06-16",
              "home_team": "Iran",
              "away_team": "New Zealand",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "New Zealand",
              "opponent": "Iran",
              "stats": {
                "minutes": 90,
                "rating": 6.5,
                "assists": 2,
                "expected_goals": 0.2226,
                "expected_assists": 0.092,
                "total_shots": 4,
                "shots_on_target": 2,
                "shots_off_target": 1,
                "total_pass": 17,
                "accurate_pass": 14,
                "key_pass": 4,
                "aerial_won": 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": 14023964,
              "match_date": "2026-05-24",
              "home_team": "Nottingham Forest",
              "away_team": "Bournemouth",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Nottingham Forest",
              "opponent": "Bournemouth",
              "stats": {
                "minutes": 62,
                "rating": 6.4,
                "assists": 0,
                "expected_goals": 0.5845,
                "expected_assists": 0.0916,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 16,
                "accurate_pass": 12,
                "key_pass": 1,
                "clearances": 1,
                "aerial_won": 2,
                "duels_won": 3,
                "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": 14023956,
              "match_date": "2026-05-17",
              "home_team": "Manchester United",
              "away_team": "Nottingham Forest",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Nottingham Forest",
              "opponent": "Manchester United",
              "stats": {
                "minutes": 70,
                "rating": 6.2,
                "assists": 0,
                "expected_goals": 0.0602,
                "expected_assists": 0.0043,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 20,
                "accurate_pass": 10,
                "aerial_won": 3,
                "duels_won": 3,
                "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": 14023943,
              "match_date": "2026-05-10",
              "home_team": "Nottingham Forest",
              "away_team": "Newcastle United",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Nottingham Forest",
              "opponent": "Newcastle United",
              "stats": {
                "minutes": 17,
                "rating": 6.3,
                "assists": 0,
                "expected_assists": 0.0655,
                "total_shots": 0,
                "total_pass": 6,
                "accurate_pass": 6
              },
              "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": 15632625,
              "match_date": "2026-05-07",
              "home_team": "Aston Villa",
              "away_team": "Nottingham Forest",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Nottingham Forest",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 71,
                "rating": 6.7,
                "assists": 0,
                "expected_goals": 0.4948,
                "expected_assists": 0.0063,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 7,
                "accurate_pass": 3,
                "aerial_won": 6,
                "duels_won": 6
              },
              "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": 15632623,
              "match_date": "2026-04-30",
              "home_team": "Nottingham Forest",
              "away_team": "Aston Villa",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Nottingham Forest",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "goal_rate": 1.0,
                "goals": 1,
                "assists": 0,
                "expected_goals": 0.7884,
                "expected_assists": 0.0118,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 21,
                "accurate_pass": 13,
                "clearances": 5,
                "aerial_won": 2,
                "duels_won": 2
              },
              "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": 15632620,
              "match_date": "2026-04-16",
              "home_team": "Nottingham Forest",
              "away_team": "FC Porto",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Nottingham Forest",
              "opponent": "FC Porto",
              "stats": {
                "minutes": 16,
                "rating": 6.6,
                "assists": 0,
                "expected_assists": 0.0006,
                "total_shots": 0,
                "total_pass": 1,
                "accurate_pass": 1,
                "duels_won": 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": 15632616,
              "match_date": "2026-04-09",
              "home_team": "FC Porto",
              "away_team": "Nottingham Forest",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Nottingham Forest",
              "opponent": "FC Porto",
              "stats": {
                "minutes": 45,
                "rating": 6.4,
                "assists": 0,
                "expected_goals": 0.2118,
                "expected_assists": 0.0009,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 9,
                "accurate_pass": 5,
                "key_pass": 1,
                "aerial_won": 3,
                "duels_won": 3
              },
              "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": 2672,
            "combined_rank_score": 326.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 444.0,
            "fifa_overall": 82.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 1,
            "squad_role": "starter",
            "projected_match_rating": 6.4659,
            "source_file": "data/player_rankings.csv",
            "player_name": "Chris Wood",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Imran Fetai",
                  "ranking": 2667
                },
                {
                  "player_name": "Din Alomerovic",
                  "ranking": 2668
                },
                {
                  "player_name": "Matías Zepeda",
                  "ranking": 2669
                },
                {
                  "player_name": "Felix Zambrano",
                  "ranking": 2670
                },
                {
                  "player_name": "Alexander Nübel",
                  "ranking": 2671
                }
              ],
              "lower": [
                {
                  "player_name": "Mohammed Sulaiman Bakor",
                  "ranking": 2673
                },
                {
                  "player_name": "Sebastián Valencia",
                  "ranking": 2674
                },
                {
                  "player_name": "Dragan Kokanović",
                  "ranking": 2675
                },
                {
                  "player_name": "Nick Doodeman",
                  "ranking": 2676
                },
                {
                  "player_name": "Bojica Nikčević",
                  "ranking": 2677
                }
              ]
            }
          }
        },
        "Sarpreet Singh": {
          "player_id": 822743,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 10,
          "height": 172,
          "market_value": 485000,
          "stats": {
            "key_pass": 2,
            "expected_assists": 0.074,
            "assists": 0,
            "expected_goals": 0.1225,
            "rating": 84.0285,
            "minutes": 78,
            "total_pass": 36,
            "accurate_pass": 29,
            "ball_recovery": 6,
            "duels_won": 3,
            "total_shots": 2,
            "total_long_balls": 3,
            "accurate_long_balls": 1,
            "total_own_half_passes": 11,
            "accurate_own_half_passes": 10,
            "total_opp_half_passes": 13,
            "accurate_opp_half_passes": 8,
            "crosses_total": 3,
            "crosses_accurate": 1,
            "touches": 39,
            "possession_lost": 14.2278,
            "dispossessed": 3.9249,
            "duels_lost": 8,
            "aerial_won": 1,
            "aerial_lost": 1,
            "interceptions": 1,
            "tackles_won": 1,
            "tackles": 1,
            "clearances": 0,
            "total_contest": 4,
            "won_contest": 2,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 1,
            "goal_rate": 0.0,
            "goals": 0,
            "shots_on_target": 2,
            "shots_off_target": 1,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0392,
            "ball_carries": 14,
            "total_progression": 56,
            "progressive_carries": 2,
            "dribbles_attempted": 3,
            "dribbles_successful": 1.2,
            "crosses_attempted": 1.8,
            "duel_win_rate": 0.461,
            "pressing_faced": "LOW",
            "matchup_zone": "Left Wing vs Right Back — Flank Battle",
            "numerical_situation": "1v1",
            "opponent_defenders": "Marwan Attia",
            "opponent_faced": "Marwan Attia",
            "antagonist_source": "attacking_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.0834,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 78.0
          },
          "latest_10_games": [
            {
              "match_id": 15186832,
              "match_date": "2026-06-16",
              "home_team": "Iran",
              "away_team": "New Zealand",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "New Zealand",
              "opponent": "Iran",
              "stats": {
                "minutes": 89,
                "rating": 5.9,
                "assists": 0,
                "expected_goals": 0.1602,
                "expected_assists": 0.0854,
                "total_shots": 3,
                "shots_on_target": 2,
                "shots_off_target": 1,
                "total_pass": 41,
                "accurate_pass": 33,
                "key_pass": 2,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "duels_won": 3,
                "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": 14671788,
              "match_date": "2026-04-24",
              "home_team": "Macarthur FC",
              "away_team": "Wellington Phoenix",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Wellington Phoenix",
              "opponent": "Macarthur FC",
              "stats": {
                "minutes": 19,
                "rating": 6.6,
                "assists": 0,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 8,
                "accurate_pass": 5,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "A-League Men",
              "league_id": "136",
              "league_slug": "a-league-men",
              "league_country": "Australia",
              "season_id": "82603",
              "season_name": "A-League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 15730,
            "combined_rank_score": 1024.0,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": 902.0,
            "sofascore_rating": 6.4,
            "sofascore_appearances": 2.0,
            "fifa_rank": 1146.0,
            "fifa_overall": 78.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 16,
            "squad_role": "starter",
            "projected_match_rating": 6.0285,
            "source_file": "data/player_rankings.csv",
            "player_name": "Sarpreet Singh",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Sayfiddin Sodikov",
                  "ranking": 15725
                },
                {
                  "player_name": "Jofre Torrents",
                  "ranking": 15726
                },
                {
                  "player_name": "Alejandro Bran",
                  "ranking": 15727
                },
                {
                  "player_name": "Wendell",
                  "ranking": 15728
                },
                {
                  "player_name": "Maximiliano Osorio",
                  "ranking": 15729
                }
              ],
              "lower": [
                {
                  "player_name": "Bartosz Bereszyński",
                  "ranking": 15731
                },
                {
                  "player_name": "Lim Hyung-jin",
                  "ranking": 15732
                },
                {
                  "player_name": "Mateo González Peña",
                  "ranking": 15733
                },
                {
                  "player_name": "Salvador Blopa",
                  "ranking": 15734
                },
                {
                  "player_name": "Esteban Calderón",
                  "ranking": 15735
                }
              ]
            }
          }
        },
        "Callum McCowatt": {
          "player_id": 822753,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 20,
          "height": 178,
          "market_value": 2700000,
          "stats": {
            "key_pass": 0,
            "expected_assists": 0.0155,
            "assists": 0,
            "expected_goals": 0.0492,
            "rating": 73.6813,
            "minutes": 68,
            "total_pass": 35,
            "accurate_pass": 28,
            "ball_recovery": 4,
            "duels_won": 6,
            "total_shots": 2,
            "total_long_balls": 2,
            "accurate_long_balls": 1,
            "total_own_half_passes": 13,
            "accurate_own_half_passes": 12,
            "total_opp_half_passes": 22,
            "accurate_opp_half_passes": 16,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 48,
            "possession_lost": 8.8311,
            "dispossessed": 0.9812,
            "duels_lost": 3,
            "aerial_won": 2,
            "aerial_lost": 1,
            "interceptions": 2,
            "tackles_won": 1,
            "tackles": 1,
            "clearances": 0,
            "total_contest": 2,
            "won_contest": 2,
            "challenges_lost": 1,
            "fouls": 0,
            "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": 0,
            "xgot": 0.0294,
            "ball_carries": 12,
            "total_progression": 27,
            "progressive_carries": 1,
            "opponent_faced": "Mostafa Ziko, Marwan Attia",
            "matchup_zone": "Left Wing vs Right Back — Flank Battle",
            "antagonist_source": "defensive_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.0449,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 67.0
          },
          "latest_10_games": [
            {
              "match_id": 15186832,
              "match_date": "2026-06-16",
              "home_team": "Iran",
              "away_team": "New Zealand",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "New Zealand",
              "opponent": "Iran",
              "stats": {
                "minutes": 68,
                "rating": 6.7,
                "assists": 0,
                "expected_goals": 0.0385,
                "expected_assists": 0.0156,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 35,
                "accurate_pass": 28,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 2,
                "aerial_won": 2,
                "duels_won": 6,
                "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": 20179,
            "combined_rank_score": 4232.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 8222.0,
            "fifa_overall": 67.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 6,
            "squad_role": "starter",
            "projected_match_rating": 6.6813,
            "source_file": "data/player_rankings.csv",
            "player_name": "Callum McCowatt",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Luuk Brouwers",
                  "ranking": 20174
                },
                {
                  "player_name": "Lirim Qamili",
                  "ranking": 20175
                },
                {
                  "player_name": "Lyndon Dykes",
                  "ranking": 20176
                },
                {
                  "player_name": "Nicky Beloko",
                  "ranking": 20177
                },
                {
                  "player_name": "Diego Churin",
                  "ranking": 20178
                }
              ],
              "lower": [
                {
                  "player_name": "Mario Dorgeles",
                  "ranking": 20180
                },
                {
                  "player_name": "Patrick Roberts",
                  "ranking": 20181
                },
                {
                  "player_name": "Juan Mosquera",
                  "ranking": 20182
                },
                {
                  "player_name": "Aníbal Leguizamón",
                  "ranking": 20183
                },
                {
                  "player_name": "Filip Benković",
                  "ranking": 20184
                }
              ]
            }
          }
        },
        "Elijah Just": {
          "player_id": 905267,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 11,
          "height": 174,
          "market_value": 2700000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.1027,
            "assists": 0,
            "expected_goals": 0.2882,
            "rating": 74.6654,
            "minutes": 89,
            "total_pass": 26,
            "accurate_pass": 22,
            "ball_recovery": 6,
            "duels_won": 5,
            "total_shots": 2,
            "total_long_balls": 2,
            "accurate_long_balls": 1,
            "total_own_half_passes": 7,
            "accurate_own_half_passes": 6,
            "total_opp_half_passes": 20,
            "accurate_opp_half_passes": 15,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 49,
            "possession_lost": 11.2841,
            "dispossessed": 0.9812,
            "duels_lost": 4,
            "aerial_won": 1,
            "aerial_lost": 1,
            "interceptions": 1,
            "tackles_won": 1,
            "tackles": 1,
            "clearances": 1,
            "total_contest": 1,
            "won_contest": 1,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 2,
            "goal_rate": 1.9888,
            "goals": 1,
            "shots_on_target": 2,
            "shots_off_target": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.471,
            "ball_carries": 11,
            "total_progression": 97,
            "progressive_carries": 2,
            "dribbles_attempted": 3,
            "dribbles_successful": 1.3,
            "crosses_attempted": 1.9,
            "duel_win_rate": 0.474,
            "pressing_faced": "LOW",
            "matchup_zone": "Right Wing vs Left Back — Flank Battle",
            "numerical_situation": "1v1",
            "opponent_defenders": "Ahmed Fatouh",
            "opponent_faced": "Ahmed Fatouh",
            "antagonist_source": "attacking_duel, midfield_pairing",
            "projected_goals": 1,
            "goal_probability": 0.4453,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 66.0
          },
          "latest_10_games": [
            {
              "match_id": 15186832,
              "match_date": "2026-06-16",
              "home_team": "Iran",
              "away_team": "New Zealand",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "New Zealand",
              "opponent": "Iran",
              "stats": {
                "minutes": 90,
                "rating": 9.0,
                "goal_rate": 2.0,
                "goals": 2,
                "assists": 0,
                "expected_goals": 0.3071,
                "expected_assists": 0.1113,
                "total_shots": 2,
                "shots_on_target": 2,
                "total_pass": 26,
                "accurate_pass": 22,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "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": 15981438,
              "match_date": "2026-05-16",
              "home_team": "Hibernian",
              "away_team": "Motherwell",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Motherwell",
              "opponent": "Hibernian",
              "stats": {
                "minutes": 73,
                "rating": 7.0,
                "assists": 0,
                "expected_goals": 0.2065,
                "expected_assists": 0.1916,
                "total_shots": 4,
                "shots_on_target": 1,
                "shots_off_target": 2,
                "total_pass": 27,
                "accurate_pass": 24,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 2,
                "aerial_won": 1,
                "duels_won": 6,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Scottish Premiership",
              "league_id": "36",
              "league_slug": "premiership",
              "league_country": "Scotland",
              "season_id": "77128",
              "season_name": "Premiership 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 15981435,
              "match_date": "2026-05-13",
              "home_team": "Motherwell",
              "away_team": "Celtic",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Motherwell",
              "opponent": "Celtic",
              "stats": {
                "minutes": 88,
                "rating": 7.0,
                "assists": 0,
                "expected_goals": 0.2433,
                "expected_assists": 0.0292,
                "total_shots": 4,
                "shots_on_target": 1,
                "total_pass": 29,
                "accurate_pass": 21,
                "key_pass": 2,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 1,
                "duels_won": 6,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Scottish Premiership",
              "league_id": "36",
              "league_slug": "premiership",
              "league_country": "Scotland",
              "season_id": "77128",
              "season_name": "Premiership 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 15981431,
              "match_date": "2026-05-09",
              "home_team": "Motherwell",
              "away_team": "Heart of Midlothian",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Motherwell",
              "opponent": "Heart of Midlothian",
              "stats": {
                "minutes": 86,
                "rating": 7.0,
                "assists": 0,
                "expected_assists": 0.111,
                "total_shots": 0,
                "total_pass": 21,
                "accurate_pass": 15,
                "key_pass": 2,
                "tackles": 1,
                "interceptions": 3,
                "aerial_won": 1,
                "duels_won": 7
              },
              "has_player_stats": true,
              "league_name": "Scottish Premiership",
              "league_id": "36",
              "league_slug": "premiership",
              "league_country": "Scotland",
              "season_id": "77128",
              "season_name": "Premiership 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 15981426,
              "match_date": "2026-05-02",
              "home_team": "Falkirk FC",
              "away_team": "Motherwell",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Motherwell",
              "opponent": "Falkirk FC",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "assists": 0,
                "expected_goals": 0.1287,
                "expected_assists": 0.0976,
                "total_shots": 2,
                "shots_off_target": 2,
                "total_pass": 27,
                "accurate_pass": 19,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 2,
                "interceptions": 1,
                "duels_won": 5,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Scottish Premiership",
              "league_id": "36",
              "league_slug": "premiership",
              "league_country": "Scotland",
              "season_id": "77128",
              "season_name": "Premiership 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 21024,
            "combined_rank_score": 4985.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 9727.0,
            "fifa_overall": 66.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 5,
            "squad_role": "starter",
            "projected_match_rating": 8.6654,
            "source_file": "data/player_rankings.csv",
            "player_name": "Elijah Just",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Tomás Palacios",
                  "ranking": 21019
                },
                {
                  "player_name": "Vasilios Zagaritis",
                  "ranking": 21020
                },
                {
                  "player_name": "Daniel Fila",
                  "ranking": 21021
                },
                {
                  "player_name": "Jesus Yendis",
                  "ranking": 21022
                },
                {
                  "player_name": "Tomáš Ostrák",
                  "ranking": 21023
                }
              ],
              "lower": [
                {
                  "player_name": "Jhonny Quiñónez",
                  "ranking": 21025
                },
                {
                  "player_name": "Julio Cascante",
                  "ranking": 21026
                },
                {
                  "player_name": "Miguel Vargas",
                  "ranking": 21027
                },
                {
                  "player_name": "Simon Pirkl",
                  "ranking": 21028
                },
                {
                  "player_name": "Lachlan Brook",
                  "ranking": 21029
                }
              ]
            }
          }
        },
        "Marko Stamenić": {
          "player_id": 1002620,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 8,
          "height": 188,
          "market_value": 3100000,
          "stats": {
            "key_pass": 0,
            "expected_assists": 0.0171,
            "assists": 0,
            "expected_goals": 0.0342,
            "rating": 77.613,
            "minutes": 89,
            "total_pass": 58,
            "accurate_pass": 50,
            "ball_recovery": 5,
            "duels_won": 2,
            "total_shots": 1,
            "total_long_balls": 5,
            "accurate_long_balls": 3,
            "total_own_half_passes": 28,
            "accurate_own_half_passes": 27,
            "total_opp_half_passes": 28,
            "accurate_opp_half_passes": 23,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 72,
            "possession_lost": 8.8344,
            "dispossessed": 0.0,
            "duels_lost": 7,
            "aerial_won": 1,
            "aerial_lost": 5,
            "interceptions": 2,
            "tackles_won": 1,
            "tackles": 1,
            "clearances": 2,
            "total_contest": 0,
            "won_contest": 0,
            "challenges_lost": 0,
            "fouls": 2,
            "fouls_drawn": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "shots_on_target": 0,
            "shots_off_target": 0,
            "blocks": 2,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "ball_carries": 18,
            "total_progression": 22,
            "progressive_carries": 0,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.8,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.455,
            "pressing_faced": "LOW",
            "matchup_zone": "CDM vs CDM",
            "numerical_situation": "1v1",
            "opponent_defenders": "Mohanad Lasheen",
            "opponent_faced": "Mohanad Lasheen",
            "antagonist_source": "attacking_duel, defensive_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.0177,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 71.0
          },
          "latest_10_games": [
            {
              "match_id": 15186832,
              "match_date": "2026-06-16",
              "home_team": "Iran",
              "away_team": "New Zealand",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "New Zealand",
              "opponent": "Iran",
              "stats": {
                "minutes": 89,
                "rating": 6.6,
                "assists": 0,
                "expected_goals": 0.0401,
                "expected_assists": 0.0172,
                "total_shots": 1,
                "total_pass": 58,
                "accurate_pass": 50,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 2,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 2,
                "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"
            }
          ],
          "ranking": {
            "global_player_rank": 17873,
            "combined_rank_score": 2355.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 4471.0,
            "fifa_overall": 71.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 4,
            "squad_role": "starter",
            "projected_match_rating": 6.613,
            "source_file": "data/player_rankings.csv",
            "player_name": "Marko Stamenić",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Richard Schunke",
                  "ranking": 17868
                },
                {
                  "player_name": "Valentin Mihăilă",
                  "ranking": 17869
                },
                {
                  "player_name": "Calvin Verdonk",
                  "ranking": 17870
                },
                {
                  "player_name": "Flávio",
                  "ranking": 17871
                },
                {
                  "player_name": "Facundo Mura",
                  "ranking": 17872
                }
              ],
              "lower": [
                {
                  "player_name": "Christian Benteke",
                  "ranking": 17874
                },
                {
                  "player_name": "Tim Ream",
                  "ranking": 17875
                },
                {
                  "player_name": "Andrej Ilić",
                  "ranking": 17876
                },
                {
                  "player_name": "David Schnegg",
                  "ranking": 17877
                },
                {
                  "player_name": "Giuseppe Pezzella",
                  "ranking": 17878
                }
              ]
            }
          }
        },
        "Joe Bell": {
          "player_id": 822749,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 6,
          "height": 182,
          "market_value": 3600000,
          "stats": {
            "key_pass": 0,
            "expected_assists": 0.0171,
            "assists": 0,
            "expected_goals": 0.0,
            "rating": 80.6813,
            "minutes": 90,
            "total_pass": 50,
            "accurate_pass": 40,
            "ball_recovery": 4,
            "duels_won": 6,
            "total_shots": 0,
            "total_long_balls": 3,
            "accurate_long_balls": 2,
            "total_own_half_passes": 27,
            "accurate_own_half_passes": 25,
            "total_opp_half_passes": 23,
            "accurate_opp_half_passes": 15,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 58,
            "possession_lost": 9.8346,
            "dispossessed": 0.0,
            "duels_lost": 3,
            "aerial_won": 2,
            "aerial_lost": 2,
            "interceptions": 2,
            "tackles_won": 1,
            "tackles": 3,
            "clearances": 1,
            "total_contest": 1,
            "won_contest": 1,
            "challenges_lost": 0,
            "fouls": 1,
            "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.0,
            "ball_carries": 16,
            "total_progression": 64,
            "progressive_carries": 1,
            "opponent_faced": "Mohamed Salah, Hamdy Fathy",
            "matchup_zone": "Attacking Mid vs Double Pivot — Tight Space Battle",
            "antagonist_source": "defensive_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.0046,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 74.0
          },
          "latest_10_games": [
            {
              "match_id": 15186832,
              "match_date": "2026-06-16",
              "home_team": "Iran",
              "away_team": "New Zealand",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "New Zealand",
              "opponent": "Iran",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assists": 0,
                "expected_assists": 0.0173,
                "total_shots": 0,
                "total_pass": 50,
                "accurate_pass": 40,
                "tackles": 3,
                "tackles_won": 1,
                "interceptions": 2,
                "clearances": 1,
                "aerial_won": 2,
                "duels_won": 6,
                "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": 16597,
            "combined_rank_score": 1334.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 2435.0,
            "fifa_overall": 74.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 2,
            "squad_role": "starter",
            "projected_match_rating": 6.6813,
            "source_file": "data/player_rankings.csv",
            "player_name": "Joe Bell",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Angelo Fulgini",
                  "ranking": 16592
                },
                {
                  "player_name": "Niklas Dorsch",
                  "ranking": 16593
                },
                {
                  "player_name": "Kike Salas",
                  "ranking": 16594
                },
                {
                  "player_name": "Krépin Diatta",
                  "ranking": 16595
                },
                {
                  "player_name": "Mike Van der Hoorn",
                  "ranking": 16596
                }
              ],
              "lower": [
                {
                  "player_name": "Gabriel Rojas",
                  "ranking": 16598
                },
                {
                  "player_name": "Atakan Karazor",
                  "ranking": 16599
                },
                {
                  "player_name": "Magomed Ozdoev",
                  "ranking": 16600
                },
                {
                  "player_name": "Diogo Gonçalves",
                  "ranking": 16601
                },
                {
                  "player_name": "Riechedly Bazoer",
                  "ranking": 16602
                }
              ]
            }
          }
        },
        "Liberato Cacace": {
          "player_id": 905264,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 13,
          "height": 184,
          "market_value": 2300000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.0364,
            "assists": 0,
            "expected_goals": 0.0264,
            "rating": 78.2717,
            "minutes": 75,
            "total_pass": 29,
            "accurate_pass": 23,
            "ball_recovery": 4,
            "duels_won": 3,
            "total_shots": 2,
            "shots_on_target": 1,
            "tackles": 2,
            "interceptions": 1,
            "clearances": 1,
            "tackles_won": 1,
            "dribbles_attempted": 3,
            "dribbles_successful": 0.7,
            "aerial_won": 1,
            "fouls_drawn": 1,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.257,
            "pressing_faced": "LOW",
            "matchup_zone": "Attacking Mid vs Double Pivot — Tight Space Battle",
            "numerical_situation": "1v2",
            "opponent_defenders": "Mohanad Lasheen, Hamdy Fathy",
            "opponent_faced": "Mohanad Lasheen, Hamdy Fathy",
            "antagonist_source": "attacking_duel, midfield_pairing",
            "goals": 0,
            "projected_goals": 0,
            "goal_probability": 0.0407,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 72.0
          },
          "latest_10_games": [
            {
              "match_id": 15186832,
              "match_date": "2026-06-16",
              "home_team": "Iran",
              "away_team": "New Zealand",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "New Zealand",
              "opponent": "Iran",
              "stats": {
                "minutes": 68,
                "rating": 6.1,
                "assists": 0,
                "expected_goals": 0.0225,
                "expected_assists": 0.01,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 22,
                "accurate_pass": 17,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 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": 17413,
            "combined_rank_score": 1972.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 3697.0,
            "fifa_overall": 72.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 7,
            "squad_role": "starter",
            "projected_match_rating": 6.2717,
            "source_file": "data/player_rankings.csv",
            "player_name": "Liberato Cacace",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Tyler Morton",
                  "ranking": 17408
                },
                {
                  "player_name": "Nahuel Losada",
                  "ranking": 17409
                },
                {
                  "player_name": "Anton Gaaei",
                  "ranking": 17410
                },
                {
                  "player_name": "Lukas Görtler",
                  "ranking": 17411
                },
                {
                  "player_name": "Christian Ordoñez",
                  "ranking": 17412
                }
              ],
              "lower": [
                {
                  "player_name": "Alex Sala",
                  "ranking": 17414
                },
                {
                  "player_name": "Connor Barron",
                  "ranking": 17415
                },
                {
                  "player_name": "Luke O'Nien",
                  "ranking": 17416
                },
                {
                  "player_name": "Lekue",
                  "ranking": 17417
                },
                {
                  "player_name": "Mathis Amougou",
                  "ranking": 17418
                }
              ]
            }
          }
        },
        "Michael Boxall": {
          "player_id": 38624,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 5,
          "height": 188,
          "market_value": 155000,
          "stats": {
            "interceptions": 2,
            "tackles": 0,
            "tackles_won": 0,
            "clearances": 7,
            "aerial_won": 2,
            "rating": 75.5876,
            "minutes": 88,
            "total_pass": 49,
            "accurate_pass": 45,
            "duels_won": 3,
            "total_long_balls": 2,
            "accurate_long_balls": 1,
            "total_own_half_passes": 30,
            "accurate_own_half_passes": 28,
            "total_opp_half_passes": 8,
            "accurate_opp_half_passes": 7,
            "crosses_total": 1,
            "crosses_accurate": 1,
            "touches": 55,
            "possession_lost": 9.1549,
            "dispossessed": 0.9812,
            "duels_lost": 3,
            "aerial_lost": 2,
            "total_contest": 1,
            "won_contest": 1,
            "ball_recovery": 2,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 1,
            "blocks": 1,
            "goal_rate": 0.0,
            "goals": 0,
            "assists": 0,
            "expected_goals": 0.0,
            "expected_assists": 0.0232,
            "total_shots": 0,
            "shots_on_target": 0,
            "shots_off_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0,
            "ball_carries": 9,
            "total_progression": 11,
            "progressive_carries": 0,
            "key_pass": 0,
            "tackles_in_zone": 0.9,
            "tackles_won_in_zone": 0.9,
            "interceptions_in_zone": 0.6,
            "clearances_in_zone": 0.6,
            "aerial_duels_won": 0.7,
            "defensive_success_rate": 0.632,
            "opponent_faced": "Omar Marmoush",
            "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.0332,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 69.0
          },
          "latest_10_games": [
            {
              "match_id": 15186832,
              "match_date": "2026-06-16",
              "home_team": "Iran",
              "away_team": "New Zealand",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "New Zealand",
              "opponent": "Iran",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assists": 0,
                "expected_assists": 0.0248,
                "total_shots": 0,
                "total_pass": 53,
                "accurate_pass": 50,
                "interceptions": 2,
                "clearances": 8,
                "aerial_won": 2,
                "duels_won": 3,
                "ball_recovery": 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": 15171576,
              "match_date": "2026-05-23",
              "home_team": "Minnesota United",
              "away_team": "Real Salt Lake",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Minnesota United",
              "opponent": "Real Salt Lake",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assists": 0,
                "expected_assists": 0.0236,
                "total_shots": 0,
                "total_pass": 38,
                "accurate_pass": 31,
                "interceptions": 1,
                "clearances": 1,
                "aerial_won": 2,
                "duels_won": 4,
                "ball_recovery": 4
              },
              "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"
            },
            {
              "match_id": 15171561,
              "match_date": "2026-05-16",
              "home_team": "New England Revolution",
              "away_team": "Minnesota United",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Minnesota United",
              "opponent": "New England Revolution",
              "stats": {
                "minutes": 72,
                "rating": 6.3,
                "assists": 0,
                "expected_assists": 0.0062,
                "total_shots": 0,
                "total_pass": 26,
                "accurate_pass": 26,
                "tackles": 2,
                "clearances": 2,
                "aerial_won": 1,
                "duels_won": 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": 19474,
            "combined_rank_score": 3616.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 6811.0,
            "fifa_overall": 69.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 18,
            "squad_role": "starter",
            "projected_match_rating": 6.5876,
            "source_file": "data/player_rankings.csv",
            "player_name": "Michael Boxall",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Tomás Ángel",
                  "ranking": 19469
                },
                {
                  "player_name": "Byeon Jun-soo",
                  "ranking": 19470
                },
                {
                  "player_name": "Andrés Mosquera",
                  "ranking": 19471
                },
                {
                  "player_name": "Arda Kızıldağ",
                  "ranking": 19472
                },
                {
                  "player_name": "Wes Burns",
                  "ranking": 19473
                }
              ],
              "lower": [
                {
                  "player_name": "Piris da Motta",
                  "ranking": 19475
                },
                {
                  "player_name": "Riley McGree",
                  "ranking": 19476
                },
                {
                  "player_name": "Raphael Obermair",
                  "ranking": 19477
                },
                {
                  "player_name": "Zvonimir Šarlija",
                  "ranking": 19478
                },
                {
                  "player_name": "Di'Shon Bernard",
                  "ranking": 19479
                }
              ]
            }
          }
        },
        "Finn Surman": {
          "player_id": 1167100,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 16,
          "height": 190,
          "market_value": 1900000,
          "stats": {
            "interceptions": 2,
            "tackles": 1,
            "tackles_won": 1,
            "clearances": 8,
            "aerial_won": 1,
            "rating": 75.1471,
            "minutes": 89,
            "total_pass": 53,
            "accurate_pass": 50,
            "duels_won": 3,
            "total_long_balls": 3,
            "accurate_long_balls": 1,
            "total_own_half_passes": 35,
            "accurate_own_half_passes": 34,
            "total_opp_half_passes": 16,
            "accurate_opp_half_passes": 15,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 67,
            "possession_lost": 2.9437,
            "dispossessed": 0.0,
            "duels_lost": 2,
            "aerial_lost": 1,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 3,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 1,
            "blocks": 3,
            "goal_rate": 0.0,
            "goals": 0,
            "assists": 0,
            "expected_goals": 0.3873,
            "expected_assists": 0.0076,
            "total_shots": 1,
            "shots_on_target": 0,
            "shots_off_target": 1,
            "big_chances_created": 0,
            "xgot": 0.0,
            "ball_carries": 13,
            "total_progression": 41,
            "progressive_carries": 0,
            "key_pass": 1,
            "tackles_in_zone": 1.0,
            "tackles_won_in_zone": 0.9,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.6,
            "aerial_duels_won": 0.7,
            "defensive_success_rate": 0.632,
            "opponent_faced": "Omar Marmoush",
            "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.0764,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 68.0
          },
          "latest_10_games": [
            {
              "match_id": 15186832,
              "match_date": "2026-06-16",
              "home_team": "Iran",
              "away_team": "New Zealand",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "New Zealand",
              "opponent": "Iran",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "assists": 0,
                "expected_goals": 0.4506,
                "expected_assists": 0.0067,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 54,
                "accurate_pass": 51,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 3,
                "clearances": 9,
                "aerial_won": 1,
                "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": 15171581,
              "match_date": "2026-05-24",
              "home_team": "Portland Timbers",
              "away_team": "San Jose Earthquakes",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Portland Timbers",
              "opponent": "San Jose Earthquakes",
              "stats": {
                "minutes": 90,
                "rating": 6.4,
                "assists": 0,
                "expected_assists": 0.0158,
                "total_shots": 0,
                "total_pass": 64,
                "accurate_pass": 61,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 4,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 6
              },
              "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"
            },
            {
              "match_id": 15171567,
              "match_date": "2026-05-17",
              "home_team": "Inter Miami CF",
              "away_team": "Portland Timbers",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Portland Timbers",
              "opponent": "Inter Miami CF",
              "stats": {
                "minutes": 90,
                "rating": 7.3,
                "assists": 0,
                "expected_assists": 0.01,
                "total_shots": 0,
                "total_pass": 39,
                "accurate_pass": 38,
                "clearances": 5,
                "aerial_won": 2,
                "duels_won": 3,
                "ball_recovery": 5
              },
              "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": 20059,
            "combined_rank_score": 4113.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 7972.0,
            "fifa_overall": 68.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 8,
            "squad_role": "starter",
            "projected_match_rating": 7.1471,
            "source_file": "data/player_rankings.csv",
            "player_name": "Finn Surman",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Jahmai Simpson-Pusey",
                  "ranking": 20054
                },
                {
                  "player_name": "Yanis Begraoui",
                  "ranking": 20055
                },
                {
                  "player_name": "Vlad Chiricheş",
                  "ranking": 20056
                },
                {
                  "player_name": "Aurélien Scheidler",
                  "ranking": 20057
                },
                {
                  "player_name": "Ibrahim Sissoko",
                  "ranking": 20058
                }
              ],
              "lower": [
                {
                  "player_name": "Gustavo Garcia",
                  "ranking": 20060
                },
                {
                  "player_name": "Soberón",
                  "ranking": 20061
                },
                {
                  "player_name": "Nicolas Vouilloz",
                  "ranking": 20062
                },
                {
                  "player_name": "Davide Biraschi",
                  "ranking": 20063
                },
                {
                  "player_name": "Roberto Insigne",
                  "ranking": 20064
                }
              ]
            }
          }
        },
        "Tim Payne": {
          "player_id": 155882,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 2,
          "height": 179,
          "market_value": 340000,
          "stats": {
            "interceptions": 1,
            "tackles": 1,
            "tackles_won": 1,
            "clearances": 1,
            "aerial_won": 1,
            "rating": 70.0974,
            "minutes": 73,
            "total_pass": 30,
            "accurate_pass": 24,
            "duels_won": 3,
            "total_long_balls": 1,
            "accurate_long_balls": 1,
            "total_own_half_passes": 13,
            "accurate_own_half_passes": 12,
            "total_opp_half_passes": 13,
            "accurate_opp_half_passes": 9,
            "crosses_total": 4,
            "crosses_accurate": 4,
            "touches": 38,
            "possession_lost": 8.8311,
            "dispossessed": 0.9812,
            "duels_lost": 3,
            "aerial_lost": 1,
            "total_contest": 1,
            "won_contest": 0,
            "ball_recovery": 2,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 1,
            "blocks": 1,
            "goal_rate": 0.0,
            "goals": 0,
            "assists": 0,
            "expected_goals": 0.0,
            "expected_assists": 0.009,
            "total_shots": 0,
            "shots_on_target": 0,
            "shots_off_target": 1,
            "big_chances_created": 2,
            "xgot": 0.0,
            "ball_carries": 7,
            "total_progression": 35,
            "progressive_carries": 1,
            "key_pass": 3,
            "tackles_in_zone": 1.9,
            "tackles_won_in_zone": 1.5,
            "interceptions_in_zone": 0.6,
            "clearances_in_zone": 0.6,
            "aerial_duels_won": 0.9,
            "defensive_success_rate": 0.486,
            "opponent_faced": "Emam Ashour",
            "pressing_zone": "Right Wing vs Left Back — Flank Battle",
            "matchup_zone": "Right Wing vs Left Back — Flank Battle",
            "antagonist_source": "defensive_duel",
            "projected_goals": 0,
            "goal_probability": 0.0208,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 64.0
          },
          "latest_10_games": [
            {
              "match_id": 15186832,
              "match_date": "2026-06-16",
              "home_team": "Iran",
              "away_team": "New Zealand",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "New Zealand",
              "opponent": "Iran",
              "stats": {
                "minutes": 78,
                "rating": 6.1,
                "assists": 0,
                "expected_assists": 0.0086,
                "total_shots": 0,
                "total_pass": 32,
                "accurate_pass": 26,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 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": 14671788,
              "match_date": "2026-04-24",
              "home_team": "Macarthur FC",
              "away_team": "Wellington Phoenix",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Wellington Phoenix",
              "opponent": "Macarthur FC",
              "stats": {
                "minutes": 71,
                "rating": 5.9,
                "assists": 0,
                "total_shots": 0,
                "total_pass": 22,
                "accurate_pass": 19,
                "clearances": 4,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "A-League Men",
              "league_id": "136",
              "league_slug": "a-league-men",
              "league_country": "Australia",
              "season_id": "82603",
              "season_name": "A-League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14671779,
              "match_date": "2026-04-18",
              "home_team": "Wellington Phoenix",
              "away_team": "Western Sydney Wanderers",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Wellington Phoenix",
              "opponent": "Western Sydney Wanderers",
              "stats": {
                "minutes": 62,
                "rating": 8.3,
                "assists": 2,
                "total_shots": 0,
                "total_pass": 30,
                "accurate_pass": 26,
                "key_pass": 3,
                "clearances": 1,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "A-League Men",
              "league_id": "136",
              "league_slug": "a-league-men",
              "league_country": "Australia",
              "season_id": "82603",
              "season_name": "A-League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14671778,
              "match_date": "2026-04-12",
              "home_team": "Melbourne City",
              "away_team": "Wellington Phoenix",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Wellington Phoenix",
              "opponent": "Melbourne City",
              "stats": {
                "minutes": 45,
                "rating": 6.1,
                "assists": 0,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 20,
                "accurate_pass": 14,
                "aerial_won": 2,
                "duels_won": 2,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "A-League Men",
              "league_id": "136",
              "league_slug": "a-league-men",
              "league_country": "Australia",
              "season_id": "82603",
              "season_name": "A-League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 22227,
            "combined_rank_score": 6086.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 785.0,
            "sofascore_rating": 6.5857,
            "sofascore_appearances": 14.0,
            "fifa_rank": 11387.0,
            "fifa_overall": 64.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 17,
            "squad_role": "starter",
            "projected_match_rating": 6.0974,
            "source_file": "data/player_rankings.csv",
            "player_name": "Tim Payne",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Yohan Demoncy",
                  "ranking": 22222
                },
                {
                  "player_name": "Bali Mumba",
                  "ranking": 22223
                },
                {
                  "player_name": "Benjamín Bosch",
                  "ranking": 22224
                },
                {
                  "player_name": "Salvatore Elia",
                  "ranking": 22225
                },
                {
                  "player_name": "Thierry Lutonda",
                  "ranking": 22226
                }
              ],
              "lower": [
                {
                  "player_name": "Josué Tiendrebeogo",
                  "ranking": 22228
                },
                {
                  "player_name": "Vicente Reyes",
                  "ranking": 22229
                },
                {
                  "player_name": "José Hernández",
                  "ranking": 22230
                },
                {
                  "player_name": "Matt Crooks",
                  "ranking": 22231
                },
                {
                  "player_name": "Alonso Coello",
                  "ranking": 22232
                }
              ]
            }
          }
        },
        "Max Crocombe": {
          "player_id": 197904,
          "position": "G",
          "position_depth": "G",
          "is_starter": true,
          "shirt_number": 1,
          "height": 193,
          "market_value": 1000000,
          "stats": {
            "saves": 2,
            "goals_prevented": 0.0,
            "rating": 71.6498,
            "minutes": 89,
            "total_pass": 38,
            "accurate_pass": 29,
            "total_long_balls": 17,
            "accurate_long_balls": 8,
            "touches": 44,
            "clearances": 0,
            "ball_recovery": 7,
            "high_claims": 0,
            "punches": 0.0,
            "aerial_won": 0,
            "sweeper_actions": 0,
            "sweeper_accurate": 0,
            "saves_inside_box": 1,
            "possession_lost": 9.8123,
            "duels_won": 1,
            "duels_lost": 1,
            "total_contest": 0,
            "won_contest": 0,
            "fouls": 0,
            "fouls_drawn": 1,
            "total_own_half_passes": 22,
            "accurate_own_half_passes": 21,
            "assists": 0,
            "expected_assists": 0.0068,
            "total_shots": 0,
            "key_pass": 1,
            "expected_saves": 2.12,
            "high_pressure_saves": 0.81,
            "shots_faced": 4.5,
            "opponent_faced": "Omar Marmoush, Emam Ashour",
            "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": 65.0
          },
          "latest_10_games": [
            {
              "match_id": 15186832,
              "match_date": "2026-06-16",
              "home_team": "Iran",
              "away_team": "New Zealand",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "New Zealand",
              "opponent": "Iran",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assists": 0,
                "expected_assists": 0.0068,
                "total_shots": 0,
                "total_pass": 38,
                "accurate_pass": 29,
                "key_pass": 1,
                "duels_won": 1,
                "ball_recovery": 7,
                "saves": 2,
                "goals_prevented": -0.282
              },
              "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": 21505,
            "combined_rank_score": 5418.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 10576.0,
            "fifa_overall": 65.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 10,
            "squad_role": "starter",
            "projected_match_rating": 6.6498,
            "source_file": "data/player_rankings.csv",
            "player_name": "Max Crocombe",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Viktor Tsukanov",
                  "ranking": 21500
                },
                {
                  "player_name": "Mathias Løvik",
                  "ranking": 21501
                },
                {
                  "player_name": "Sergio Álvarez",
                  "ranking": 21502
                },
                {
                  "player_name": "Gonzalo Piñeiro",
                  "ranking": 21503
                },
                {
                  "player_name": "John Swift",
                  "ranking": 21504
                }
              ],
              "lower": [
                {
                  "player_name": "Marquinhos Cipriano",
                  "ranking": 21506
                },
                {
                  "player_name": "Alec Georgen",
                  "ranking": 21507
                },
                {
                  "player_name": "Yann Massombo",
                  "ranking": 21508
                },
                {
                  "player_name": "Rafael Luis",
                  "ranking": 21509
                },
                {
                  "player_name": "David Turnbull",
                  "ranking": 21510
                }
              ]
            }
          }
        }
      },
      "bench_players": {
        "Alex Paulsen": {
          "player_id": 1000379,
          "position": "G",
          "position_depth": "G_BENCH",
          "is_starter": false,
          "shirt_number": 18,
          "height": 184,
          "market_value": 780000,
          "stats": {
            "saves": 0,
            "goals_prevented": 0.0144,
            "rating": 77.6724,
            "minutes": 4,
            "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": 71.0
          },
          "latest_10_games": [],
          "ranking": {
            "global_player_rank": 17947,
            "combined_rank_score": 2406.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 4513.0,
            "fifa_overall": 71.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 12,
            "squad_role": "substitute",
            "projected_match_rating": 6.6724,
            "source_file": "data/player_rankings.csv",
            "player_name": "Alex Paulsen",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Lucas González",
                  "ranking": 17942
                },
                {
                  "player_name": "Paulo Bernardo",
                  "ranking": 17943
                },
                {
                  "player_name": "Anass Salah-Eddine",
                  "ranking": 17944
                },
                {
                  "player_name": "Kamil Piątkowski",
                  "ranking": 17945
                },
                {
                  "player_name": "Matías Espinoza",
                  "ranking": 17946
                }
              ],
              "lower": [
                {
                  "player_name": "Adrián Bernabé",
                  "ranking": 17948
                },
                {
                  "player_name": "Yang Hyun-Jun",
                  "ranking": 17949
                },
                {
                  "player_name": "Denis Drăguş",
                  "ranking": 17950
                },
                {
                  "player_name": "Isak Jansson",
                  "ranking": 17951
                },
                {
                  "player_name": "Jack Rudoni",
                  "ranking": 17952
                }
              ]
            }
          }
        },
        "Tyler Bindon": {
          "player_id": 1514870,
          "position": "D",
          "position_depth": "D_BENCH",
          "is_starter": false,
          "shirt_number": 4,
          "height": 188,
          "market_value": 3600000,
          "stats": {
            "interceptions": 0,
            "tackles": 0,
            "tackles_won": 0,
            "clearances": 0,
            "aerial_won": 0,
            "rating": 69.3854,
            "minutes": 14,
            "total_pass": 0,
            "accurate_pass": 0,
            "duels_won": 0,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_own_half_passes": 0,
            "accurate_own_half_passes": 0,
            "total_opp_half_passes": 0,
            "accurate_opp_half_passes": 0,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 0,
            "possession_lost": 0.0,
            "dispossessed": 0.0,
            "duels_lost": 0,
            "aerial_lost": 1,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 0,
            "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.0001,
            "total_shots": 0,
            "shots_on_target": 0,
            "shots_off_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0,
            "ball_carries": 0,
            "total_progression": 1,
            "progressive_carries": 0,
            "key_pass": 0,
            "bench_appearance_probability": 0.3,
            "bench_expected_minutes": 13.6,
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 69.0
          },
          "latest_10_games": [
            {
              "match_id": 15186832,
              "match_date": "2026-06-16",
              "home_team": "Iran",
              "away_team": "New Zealand",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "New Zealand",
              "opponent": "Iran",
              "stats": {
                "minutes": 1,
                "assists": 0,
                "expected_assists": 0.0011,
                "total_shots": 0,
                "total_pass": 1,
                "accurate_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "aerial_won": 1,
                "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"
            }
          ],
          "ranking": {
            "global_player_rank": 19318,
            "combined_rank_score": 3481.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 6708.0,
            "fifa_overall": 69.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 3,
            "squad_role": "substitute",
            "projected_match_rating": 0.3854,
            "source_file": "data/player_rankings.csv",
            "player_name": "Tyler Bindon",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "André Luiz",
                  "ranking": 19313
                },
                {
                  "player_name": "Timo Hübers",
                  "ranking": 19314
                },
                {
                  "player_name": "Petko Hristov",
                  "ranking": 19315
                },
                {
                  "player_name": "Festy Ebosele",
                  "ranking": 19316
                },
                {
                  "player_name": "Terry Yegbe",
                  "ranking": 19317
                }
              ],
              "lower": [
                {
                  "player_name": "Maryan Shved",
                  "ranking": 19319
                },
                {
                  "player_name": "Matias Sepulveda",
                  "ranking": 19320
                },
                {
                  "player_name": "Rafik Guitane",
                  "ranking": 19321
                },
                {
                  "player_name": "Byron Castillo",
                  "ranking": 19322
                },
                {
                  "player_name": "Tomás Alarcón",
                  "ranking": 19323
                }
              ]
            }
          }
        },
        "Francis De Vries": {
          "player_id": 867714,
          "position": "D",
          "position_depth": "D_BENCH",
          "is_starter": false,
          "shirt_number": 15,
          "height": 181,
          "market_value": 630000,
          "stats": {
            "interceptions": 0,
            "tackles": 0,
            "tackles_won": 0,
            "clearances": 0,
            "aerial_won": 0,
            "rating": 75.7061,
            "minutes": 14,
            "total_pass": 1,
            "accurate_pass": 1,
            "duels_won": 0,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_own_half_passes": 0,
            "accurate_own_half_passes": 0,
            "total_opp_half_passes": 1,
            "accurate_opp_half_passes": 1,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 2,
            "possession_lost": 0.5431,
            "dispossessed": 0.0,
            "duels_lost": 0,
            "aerial_lost": 0,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 0,
            "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.0,
            "total_shots": 0,
            "shots_on_target": 0,
            "shots_off_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0,
            "ball_carries": 0,
            "total_progression": 0,
            "progressive_carries": 0,
            "key_pass": 0,
            "bench_appearance_probability": 0.299,
            "bench_expected_minutes": 13.57,
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 69.0
          },
          "latest_10_games": [
            {
              "match_id": 16194271,
              "match_date": "2026-05-23",
              "home_team": "Auckland FC",
              "away_team": "Sydney FC",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Auckland FC",
              "opponent": "Sydney FC",
              "stats": {
                "minutes": 18,
                "rating": 6.9,
                "assists": 0,
                "total_shots": 0,
                "total_pass": 11,
                "accurate_pass": 8,
                "aerial_won": 2,
                "duels_won": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "A-League Men",
              "league_id": "136",
              "league_slug": "a-league-men",
              "league_country": "Australia",
              "season_id": "82603",
              "season_name": "A-League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 16114067,
              "match_date": "2026-05-15",
              "home_team": "Adelaide United",
              "away_team": "Auckland FC",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Auckland FC",
              "opponent": "Adelaide United",
              "stats": {
                "minutes": 14,
                "rating": 6.6,
                "assists": 0,
                "total_shots": 0,
                "total_pass": 5,
                "accurate_pass": 2,
                "clearances": 1
              },
              "has_player_stats": true,
              "league_name": "A-League Men",
              "league_id": "136",
              "league_slug": "a-league-men",
              "league_country": "Australia",
              "season_id": "82603",
              "season_name": "A-League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 16114066,
              "match_date": "2026-05-09",
              "home_team": "Auckland FC",
              "away_team": "Adelaide United",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Auckland FC",
              "opponent": "Adelaide United",
              "stats": {
                "minutes": 11,
                "rating": 6.9,
                "assists": 0,
                "total_shots": 0,
                "total_pass": 8,
                "accurate_pass": 6,
                "key_pass": 1,
                "tackles": 1,
                "clearances": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "A-League Men",
              "league_id": "136",
              "league_slug": "a-league-men",
              "league_country": "Australia",
              "season_id": "82603",
              "season_name": "A-League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 18967,
            "combined_rank_score": 3191.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 131.0,
            "sofascore_rating": 7.32,
            "sofascore_appearances": 25.0,
            "fifa_rank": 6251.0,
            "fifa_overall": 69.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 15,
            "squad_role": "substitute",
            "projected_match_rating": 6.7061,
            "source_file": "data/player_rankings.csv",
            "player_name": "Francis De Vries",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Connor Ronan",
                  "ranking": 18962
                },
                {
                  "player_name": "Maxime Bernauer",
                  "ranking": 18963
                },
                {
                  "player_name": "Ronaël Pierre-Gabriel",
                  "ranking": 18964
                },
                {
                  "player_name": "Jean Victor Makengo",
                  "ranking": 18965
                },
                {
                  "player_name": "Leonardo Sernicola",
                  "ranking": 18966
                }
              ],
              "lower": [
                {
                  "player_name": "Emiliano Amor",
                  "ranking": 18968
                },
                {
                  "player_name": "Luciano Pons",
                  "ranking": 18969
                },
                {
                  "player_name": "Tommy Doyle",
                  "ranking": 18970
                },
                {
                  "player_name": "Alonzo Engwanda",
                  "ranking": 18971
                },
                {
                  "player_name": "Thomas Ouwejan",
                  "ranking": 18972
                }
              ]
            }
          }
        },
        "Ryan Thomas": {
          "player_id": 333571,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 30,
          "height": 174,
          "market_value": 670000,
          "stats": {
            "key_pass": 0,
            "expected_assists": 0.0011,
            "assists": 0,
            "expected_goals": 0.0,
            "rating": 72.2665,
            "minutes": 22,
            "total_pass": 1,
            "accurate_pass": 1,
            "ball_recovery": 1,
            "duels_won": 0,
            "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": 1,
            "accurate_opp_half_passes": 0,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 3,
            "possession_lost": 1.4373,
            "dispossessed": 0.9812,
            "duels_lost": 2,
            "aerial_won": 0,
            "aerial_lost": 2,
            "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.0,
            "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": 0,
            "total_progression": 0,
            "progressive_carries": 0,
            "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": 66.0
          },
          "latest_10_games": [
            {
              "match_id": 15186832,
              "match_date": "2026-06-16",
              "home_team": "Iran",
              "away_team": "New Zealand",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "New Zealand",
              "opponent": "Iran",
              "stats": {
                "minutes": 22,
                "rating": 6.3,
                "assists": 0,
                "expected_assists": 0.0046,
                "total_shots": 0,
                "total_pass": 6,
                "accurate_pass": 3,
                "clearances": 2,
                "aerial_won": 2,
                "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"
            }
          ],
          "ranking": {
            "global_player_rank": 20936,
            "combined_rank_score": 4907.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 9493.0,
            "fifa_overall": 66.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 13,
            "squad_role": "substitute",
            "projected_match_rating": 6.2665,
            "source_file": "data/player_rankings.csv",
            "player_name": "Ryan Thomas",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Yasser Al-Shahrani",
                  "ranking": 20931
                },
                {
                  "player_name": "Leon Klassen",
                  "ranking": 20932
                },
                {
                  "player_name": "Branimir Hrgota",
                  "ranking": 20933
                },
                {
                  "player_name": "Maren Haile-Selassie",
                  "ranking": 20934
                },
                {
                  "player_name": "Antonio Čolak",
                  "ranking": 20935
                }
              ],
              "lower": [
                {
                  "player_name": "Unai Hernández",
                  "ranking": 20937
                },
                {
                  "player_name": "Matías Palacios",
                  "ranking": 20938
                },
                {
                  "player_name": "Augusto Schott",
                  "ranking": 20939
                },
                {
                  "player_name": "Darragh Lenihan",
                  "ranking": 20940
                },
                {
                  "player_name": "Derrick Etienne",
                  "ranking": 20941
                }
              ]
            }
          }
        },
        "Alex Rufer": {
          "player_id": 356256,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 14,
          "height": 184,
          "market_value": 655000,
          "stats": {
            "key_pass": 0,
            "expected_assists": 0.0,
            "assists": 0,
            "expected_goals": 0.0,
            "rating": 73.7513,
            "minutes": 22,
            "total_pass": 14,
            "accurate_pass": 11,
            "ball_recovery": 1,
            "duels_won": 2,
            "total_shots": 0,
            "total_long_balls": 2,
            "accurate_long_balls": 1,
            "total_own_half_passes": 8,
            "accurate_own_half_passes": 7,
            "total_opp_half_passes": 6,
            "accurate_opp_half_passes": 4,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 19,
            "possession_lost": 3.5142,
            "dispossessed": 0.9812,
            "duels_lost": 2,
            "aerial_won": 0,
            "aerial_lost": 2,
            "interceptions": 0,
            "tackles_won": 1,
            "tackles": 1,
            "clearances": 0,
            "total_contest": 0,
            "won_contest": 0,
            "challenges_lost": 2,
            "fouls": 1,
            "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.0,
            "ball_carries": 3,
            "total_progression": 4,
            "progressive_carries": 0,
            "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": 67.0
          },
          "latest_10_games": [
            {
              "match_id": 14671779,
              "match_date": "2026-04-18",
              "home_team": "Wellington Phoenix",
              "away_team": "Western Sydney Wanderers",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Wellington Phoenix",
              "opponent": "Western Sydney Wanderers",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assists": 0,
                "total_shots": 3,
                "shots_off_target": 1,
                "total_pass": 52,
                "accurate_pass": 44,
                "tackles": 3,
                "tackles_won": 3,
                "interceptions": 2,
                "clearances": 3,
                "aerial_won": 1,
                "duels_won": 6,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "A-League Men",
              "league_id": "136",
              "league_slug": "a-league-men",
              "league_country": "Australia",
              "season_id": "82603",
              "season_name": "A-League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14671778,
              "match_date": "2026-04-12",
              "home_team": "Melbourne City",
              "away_team": "Wellington Phoenix",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Wellington Phoenix",
              "opponent": "Melbourne City",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "assists": 0,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 62,
                "accurate_pass": 45,
                "tackles": 7,
                "tackles_won": 4,
                "interceptions": 1,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 11,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "A-League Men",
              "league_id": "136",
              "league_slug": "a-league-men",
              "league_country": "Australia",
              "season_id": "82603",
              "season_name": "A-League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14671774,
              "match_date": "2026-04-05",
              "home_team": "Melbourne Victory",
              "away_team": "Wellington Phoenix",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Wellington Phoenix",
              "opponent": "Melbourne Victory",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "assists": 0,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 64,
                "accurate_pass": 52,
                "tackles": 4,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 1,
                "duels_won": 6,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "A-League Men",
              "league_id": "136",
              "league_slug": "a-league-men",
              "league_country": "Australia",
              "season_id": "82603",
              "season_name": "A-League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 20154,
            "combined_rank_score": 4206.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 207.0,
            "sofascore_rating": 7.1522,
            "sofascore_appearances": 23.0,
            "fifa_rank": 8205.0,
            "fifa_overall": 67.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 14,
            "squad_role": "substitute",
            "projected_match_rating": 6.7513,
            "source_file": "data/player_rankings.csv",
            "player_name": "Alex Rufer",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Samuel Edozie",
                  "ranking": 20149
                },
                {
                  "player_name": "Sebastián Valdez",
                  "ranking": 20150
                },
                {
                  "player_name": "Matías Lazo",
                  "ranking": 20151
                },
                {
                  "player_name": "Stefan Schimmer",
                  "ranking": 20152
                },
                {
                  "player_name": "Stefanos Tzimas",
                  "ranking": 20153
                }
              ],
              "lower": [
                {
                  "player_name": "Sergi Gómez",
                  "ranking": 20155
                },
                {
                  "player_name": "Abdoulaye Sissako",
                  "ranking": 20156
                },
                {
                  "player_name": "Aziz Behich",
                  "ranking": 20157
                },
                {
                  "player_name": "Kastriot Imeri",
                  "ranking": 20158
                },
                {
                  "player_name": "Park Chan-Yong",
                  "ranking": 20159
                }
              ]
            }
          }
        },
        "Benjamin Old": {
          "player_id": 1122425,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 19,
          "height": 172,
          "market_value": 1900000,
          "stats": {
            "expected_goals": 0.0,
            "goal_rate": 0.0001,
            "goals": 0,
            "shots_on_target": 0,
            "expected_assists": 0.0,
            "key_pass": 0,
            "rating": 87.3444,
            "minutes": 25,
            "total_shots": 0,
            "duels_won": 1,
            "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": 0,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 3,
            "possession_lost": 0.5515,
            "dispossessed": 0.0,
            "duels_lost": 0,
            "aerial_lost": 1,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 0,
            "challenges_lost": 0,
            "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.0,
            "offsides": 0,
            "ball_carries": 1,
            "total_progression": 4,
            "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": 81.0
          },
          "latest_10_games": [
            {
              "match_id": 15186832,
              "match_date": "2026-06-16",
              "home_team": "Iran",
              "away_team": "New Zealand",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "New Zealand",
              "opponent": "Iran",
              "stats": {
                "minutes": 22,
                "rating": 6.4,
                "assists": 0,
                "expected_assists": 0.0002,
                "total_shots": 0,
                "total_pass": 8,
                "accurate_pass": 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"
            }
          ],
          "ranking": {
            "global_player_rank": 1111,
            "combined_rank_score": 360.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": 9,
            "squad_role": "substitute",
            "projected_match_rating": 6.3444,
            "source_file": "data/player_rankings.csv",
            "player_name": "Benjamin Old",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Zé Ivaldo",
                  "ranking": 1106
                },
                {
                  "player_name": "Ebenezer Annan",
                  "ranking": 1107
                },
                {
                  "player_name": "Nicolás Ibáñez",
                  "ranking": 1108
                },
                {
                  "player_name": "Azizjon Ganiev",
                  "ranking": 1109
                },
                {
                  "player_name": "Dominik Fitz",
                  "ranking": 1110
                }
              ],
              "lower": [
                {
                  "player_name": "Aarón Mejía",
                  "ranking": 1112
                },
                {
                  "player_name": "Jacob Davis",
                  "ranking": 1113
                },
                {
                  "player_name": "Pavel Kačor",
                  "ranking": 1114
                },
                {
                  "player_name": "Umar Adhamzoda",
                  "ranking": 1115
                },
                {
                  "player_name": "Abrorbek Ismoilov",
                  "ranking": 1116
                }
              ]
            }
          }
        },
        "Jesse Randall": {
          "player_id": 1002506,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 21,
          "height": 176,
          "market_value": 930000,
          "stats": {
            "expected_goals": 0.0,
            "goal_rate": 0.0001,
            "goals": 0,
            "shots_on_target": 0,
            "expected_assists": 0.0168,
            "key_pass": 0,
            "rating": 66.6582,
            "minutes": 25,
            "total_shots": 0,
            "duels_won": 1,
            "aerial_won": 0,
            "total_pass": 6,
            "accurate_pass": 4,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 2,
            "accurate_opp_half_passes": 2,
            "crosses_total": 2,
            "crosses_accurate": 1,
            "touches": 9,
            "possession_lost": 5.6529,
            "dispossessed": 1.9625,
            "duels_lost": 2,
            "aerial_lost": 2,
            "total_contest": 1,
            "won_contest": 0,
            "ball_recovery": 1,
            "challenges_lost": 1,
            "fouls": 0,
            "fouls_drawn": 0,
            "assists": 0,
            "shots_off_target": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 1,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "offsides": 1,
            "ball_carries": 2,
            "total_progression": 16,
            "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": 60.0
          },
          "latest_10_games": [
            {
              "match_id": 15186832,
              "match_date": "2026-06-16",
              "home_team": "Iran",
              "away_team": "New Zealand",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "New Zealand",
              "opponent": "Iran",
              "stats": {
                "minutes": 1,
                "assists": 0,
                "expected_assists": 0.0703,
                "total_shots": 0,
                "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": 16194271,
              "match_date": "2026-05-23",
              "home_team": "Auckland FC",
              "away_team": "Sydney FC",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Auckland FC",
              "opponent": "Sydney FC",
              "stats": {
                "minutes": 89,
                "rating": 6.6,
                "assists": 0,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 22,
                "accurate_pass": 17,
                "key_pass": 2,
                "tackles": 1,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 8
              },
              "has_player_stats": true,
              "league_name": "A-League Men",
              "league_id": "136",
              "league_slug": "a-league-men",
              "league_country": "Australia",
              "season_id": "82603",
              "season_name": "A-League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 16114067,
              "match_date": "2026-05-15",
              "home_team": "Adelaide United",
              "away_team": "Auckland FC",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Auckland FC",
              "opponent": "Adelaide United",
              "stats": {
                "minutes": 89,
                "rating": 7.1,
                "assists": 1,
                "total_shots": 2,
                "shots_on_target": 1,
                "total_pass": 25,
                "accurate_pass": 15,
                "key_pass": 2,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 3,
                "duels_won": 2,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "A-League Men",
              "league_id": "136",
              "league_slug": "a-league-men",
              "league_country": "Australia",
              "season_id": "82603",
              "season_name": "A-League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 16114066,
              "match_date": "2026-05-09",
              "home_team": "Auckland FC",
              "away_team": "Adelaide United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Auckland FC",
              "opponent": "Adelaide United",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assists": 0,
                "total_shots": 5,
                "shots_on_target": 2,
                "shots_off_target": 1,
                "total_pass": 26,
                "accurate_pass": 21,
                "key_pass": 4,
                "tackles": 1,
                "interceptions": 1,
                "duels_won": 1,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "A-League Men",
              "league_id": "136",
              "league_slug": "a-league-men",
              "league_country": "Australia",
              "season_id": "82603",
              "season_name": "A-League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14671801,
              "match_date": "2026-04-26",
              "home_team": "Sydney FC",
              "away_team": "Auckland FC",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Auckland FC",
              "opponent": "Sydney FC",
              "stats": {
                "minutes": 90,
                "rating": 7.6,
                "assists": 0,
                "total_shots": 0,
                "total_pass": 24,
                "accurate_pass": 16,
                "key_pass": 3,
                "interceptions": 1,
                "clearances": 2,
                "aerial_won": 2,
                "duels_won": 4,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "A-League Men",
              "league_id": "136",
              "league_slug": "a-league-men",
              "league_country": "Australia",
              "season_id": "82603",
              "season_name": "A-League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14671784,
              "match_date": "2026-04-19",
              "home_team": "Auckland FC",
              "away_team": "Central Coast Mariners",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Auckland FC",
              "opponent": "Central Coast Mariners",
              "stats": {
                "minutes": 90,
                "rating": 7.4,
                "assists": 0,
                "total_shots": 3,
                "shots_on_target": 1,
                "total_pass": 20,
                "accurate_pass": 15,
                "key_pass": 3,
                "tackles": 1,
                "duels_won": 5,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "A-League Men",
              "league_id": "136",
              "league_slug": "a-league-men",
              "league_country": "Australia",
              "season_id": "82603",
              "season_name": "A-League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14671776,
              "match_date": "2026-04-11",
              "home_team": "Auckland FC",
              "away_team": "Melbourne Victory",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Auckland FC",
              "opponent": "Melbourne Victory",
              "stats": {
                "minutes": 59,
                "rating": 6.9,
                "assists": 0,
                "total_shots": 0,
                "total_pass": 18,
                "accurate_pass": 12,
                "key_pass": 2,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "A-League Men",
              "league_id": "136",
              "league_slug": "a-league-men",
              "league_country": "Australia",
              "season_id": "82603",
              "season_name": "A-League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14671766,
              "match_date": "2026-04-03",
              "home_team": "Adelaide United",
              "away_team": "Auckland FC",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Auckland FC",
              "opponent": "Adelaide United",
              "stats": {
                "minutes": 83,
                "rating": 6.4,
                "assists": 0,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 18,
                "accurate_pass": 12,
                "key_pass": 1,
                "duels_won": 2,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "A-League Men",
              "league_id": "136",
              "league_slug": "a-league-men",
              "league_country": "Australia",
              "season_id": "82603",
              "season_name": "A-League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 23762,
            "combined_rank_score": 7545.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 196.0,
            "sofascore_rating": 7.17,
            "sofascore_appearances": 30.0,
            "fifa_rank": 14894.0,
            "fifa_overall": 60.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 11,
            "squad_role": "substitute",
            "projected_match_rating": 6.6582,
            "source_file": "data/player_rankings.csv",
            "player_name": "Jesse Randall",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Antoine Hainaut",
                  "ranking": 23757
                },
                {
                  "player_name": "Sinclair Armstrong",
                  "ranking": 23758
                },
                {
                  "player_name": "Dylan Tait",
                  "ranking": 23759
                },
                {
                  "player_name": "Mauro Peinipil",
                  "ranking": 23760
                },
                {
                  "player_name": "Dotor",
                  "ranking": 23761
                }
              ],
              "lower": [
                {
                  "player_name": "Diogo Pinto",
                  "ranking": 23763
                },
                {
                  "player_name": "Brad Guzan",
                  "ranking": 23764
                },
                {
                  "player_name": "Daniel Ihendu",
                  "ranking": 23765
                },
                {
                  "player_name": "Alan Núñez",
                  "ranking": 23766
                },
                {
                  "player_name": "Miguel Ángel Torrén",
                  "ranking": 23767
                }
              ]
            }
          }
        }
      },
      "substitutes": {
        "Alex Paulsen": {
          "player_id": 1000379,
          "position": "G",
          "position_depth": "G_BENCH",
          "is_starter": false,
          "shirt_number": 18,
          "height": 184,
          "market_value": 780000,
          "stats": {
            "saves": 0,
            "goals_prevented": 0.0144,
            "rating": 77.6724,
            "minutes": 4,
            "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": 71.0
          },
          "latest_10_games": [],
          "ranking": {
            "global_player_rank": 17947,
            "combined_rank_score": 2406.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 4513.0,
            "fifa_overall": 71.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 12,
            "squad_role": "substitute",
            "projected_match_rating": 6.6724,
            "source_file": "data/player_rankings.csv",
            "player_name": "Alex Paulsen",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Lucas González",
                  "ranking": 17942
                },
                {
                  "player_name": "Paulo Bernardo",
                  "ranking": 17943
                },
                {
                  "player_name": "Anass Salah-Eddine",
                  "ranking": 17944
                },
                {
                  "player_name": "Kamil Piątkowski",
                  "ranking": 17945
                },
                {
                  "player_name": "Matías Espinoza",
                  "ranking": 17946
                }
              ],
              "lower": [
                {
                  "player_name": "Adrián Bernabé",
                  "ranking": 17948
                },
                {
                  "player_name": "Yang Hyun-Jun",
                  "ranking": 17949
                },
                {
                  "player_name": "Denis Drăguş",
                  "ranking": 17950
                },
                {
                  "player_name": "Isak Jansson",
                  "ranking": 17951
                },
                {
                  "player_name": "Jack Rudoni",
                  "ranking": 17952
                }
              ]
            }
          }
        },
        "Tyler Bindon": {
          "player_id": 1514870,
          "position": "D",
          "position_depth": "D_BENCH",
          "is_starter": false,
          "shirt_number": 4,
          "height": 188,
          "market_value": 3600000,
          "stats": {
            "interceptions": 0,
            "tackles": 0,
            "tackles_won": 0,
            "clearances": 0,
            "aerial_won": 0,
            "rating": 69.3854,
            "minutes": 14,
            "total_pass": 0,
            "accurate_pass": 0,
            "duels_won": 0,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_own_half_passes": 0,
            "accurate_own_half_passes": 0,
            "total_opp_half_passes": 0,
            "accurate_opp_half_passes": 0,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 0,
            "possession_lost": 0.0,
            "dispossessed": 0.0,
            "duels_lost": 0,
            "aerial_lost": 1,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 0,
            "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.0001,
            "total_shots": 0,
            "shots_on_target": 0,
            "shots_off_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0,
            "ball_carries": 0,
            "total_progression": 1,
            "progressive_carries": 0,
            "key_pass": 0,
            "bench_appearance_probability": 0.3,
            "bench_expected_minutes": 13.6,
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 69.0
          },
          "latest_10_games": [
            {
              "match_id": 15186832,
              "match_date": "2026-06-16",
              "home_team": "Iran",
              "away_team": "New Zealand",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "New Zealand",
              "opponent": "Iran",
              "stats": {
                "minutes": 1,
                "assists": 0,
                "expected_assists": 0.0011,
                "total_shots": 0,
                "total_pass": 1,
                "accurate_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "aerial_won": 1,
                "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"
            }
          ],
          "ranking": {
            "global_player_rank": 19318,
            "combined_rank_score": 3481.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 6708.0,
            "fifa_overall": 69.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 3,
            "squad_role": "substitute",
            "projected_match_rating": 0.3854,
            "source_file": "data/player_rankings.csv",
            "player_name": "Tyler Bindon",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "André Luiz",
                  "ranking": 19313
                },
                {
                  "player_name": "Timo Hübers",
                  "ranking": 19314
                },
                {
                  "player_name": "Petko Hristov",
                  "ranking": 19315
                },
                {
                  "player_name": "Festy Ebosele",
                  "ranking": 19316
                },
                {
                  "player_name": "Terry Yegbe",
                  "ranking": 19317
                }
              ],
              "lower": [
                {
                  "player_name": "Maryan Shved",
                  "ranking": 19319
                },
                {
                  "player_name": "Matias Sepulveda",
                  "ranking": 19320
                },
                {
                  "player_name": "Rafik Guitane",
                  "ranking": 19321
                },
                {
                  "player_name": "Byron Castillo",
                  "ranking": 19322
                },
                {
                  "player_name": "Tomás Alarcón",
                  "ranking": 19323
                }
              ]
            }
          }
        },
        "Francis De Vries": {
          "player_id": 867714,
          "position": "D",
          "position_depth": "D_BENCH",
          "is_starter": false,
          "shirt_number": 15,
          "height": 181,
          "market_value": 630000,
          "stats": {
            "interceptions": 0,
            "tackles": 0,
            "tackles_won": 0,
            "clearances": 0,
            "aerial_won": 0,
            "rating": 75.7061,
            "minutes": 14,
            "total_pass": 1,
            "accurate_pass": 1,
            "duels_won": 0,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_own_half_passes": 0,
            "accurate_own_half_passes": 0,
            "total_opp_half_passes": 1,
            "accurate_opp_half_passes": 1,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 2,
            "possession_lost": 0.5431,
            "dispossessed": 0.0,
            "duels_lost": 0,
            "aerial_lost": 0,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 0,
            "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.0,
            "total_shots": 0,
            "shots_on_target": 0,
            "shots_off_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0,
            "ball_carries": 0,
            "total_progression": 0,
            "progressive_carries": 0,
            "key_pass": 0,
            "bench_appearance_probability": 0.299,
            "bench_expected_minutes": 13.57,
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 69.0
          },
          "latest_10_games": [
            {
              "match_id": 16194271,
              "match_date": "2026-05-23",
              "home_team": "Auckland FC",
              "away_team": "Sydney FC",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Auckland FC",
              "opponent": "Sydney FC",
              "stats": {
                "minutes": 18,
                "rating": 6.9,
                "assists": 0,
                "total_shots": 0,
                "total_pass": 11,
                "accurate_pass": 8,
                "aerial_won": 2,
                "duels_won": 2,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "A-League Men",
              "league_id": "136",
              "league_slug": "a-league-men",
              "league_country": "Australia",
              "season_id": "82603",
              "season_name": "A-League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 16114067,
              "match_date": "2026-05-15",
              "home_team": "Adelaide United",
              "away_team": "Auckland FC",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Auckland FC",
              "opponent": "Adelaide United",
              "stats": {
                "minutes": 14,
                "rating": 6.6,
                "assists": 0,
                "total_shots": 0,
                "total_pass": 5,
                "accurate_pass": 2,
                "clearances": 1
              },
              "has_player_stats": true,
              "league_name": "A-League Men",
              "league_id": "136",
              "league_slug": "a-league-men",
              "league_country": "Australia",
              "season_id": "82603",
              "season_name": "A-League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 16114066,
              "match_date": "2026-05-09",
              "home_team": "Auckland FC",
              "away_team": "Adelaide United",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Auckland FC",
              "opponent": "Adelaide United",
              "stats": {
                "minutes": 11,
                "rating": 6.9,
                "assists": 0,
                "total_shots": 0,
                "total_pass": 8,
                "accurate_pass": 6,
                "key_pass": 1,
                "tackles": 1,
                "clearances": 1,
                "duels_won": 1,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "A-League Men",
              "league_id": "136",
              "league_slug": "a-league-men",
              "league_country": "Australia",
              "season_id": "82603",
              "season_name": "A-League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 18967,
            "combined_rank_score": 3191.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 131.0,
            "sofascore_rating": 7.32,
            "sofascore_appearances": 25.0,
            "fifa_rank": 6251.0,
            "fifa_overall": 69.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 15,
            "squad_role": "substitute",
            "projected_match_rating": 6.7061,
            "source_file": "data/player_rankings.csv",
            "player_name": "Francis De Vries",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Connor Ronan",
                  "ranking": 18962
                },
                {
                  "player_name": "Maxime Bernauer",
                  "ranking": 18963
                },
                {
                  "player_name": "Ronaël Pierre-Gabriel",
                  "ranking": 18964
                },
                {
                  "player_name": "Jean Victor Makengo",
                  "ranking": 18965
                },
                {
                  "player_name": "Leonardo Sernicola",
                  "ranking": 18966
                }
              ],
              "lower": [
                {
                  "player_name": "Emiliano Amor",
                  "ranking": 18968
                },
                {
                  "player_name": "Luciano Pons",
                  "ranking": 18969
                },
                {
                  "player_name": "Tommy Doyle",
                  "ranking": 18970
                },
                {
                  "player_name": "Alonzo Engwanda",
                  "ranking": 18971
                },
                {
                  "player_name": "Thomas Ouwejan",
                  "ranking": 18972
                }
              ]
            }
          }
        },
        "Ryan Thomas": {
          "player_id": 333571,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 30,
          "height": 174,
          "market_value": 670000,
          "stats": {
            "key_pass": 0,
            "expected_assists": 0.0011,
            "assists": 0,
            "expected_goals": 0.0,
            "rating": 72.2665,
            "minutes": 22,
            "total_pass": 1,
            "accurate_pass": 1,
            "ball_recovery": 1,
            "duels_won": 0,
            "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": 1,
            "accurate_opp_half_passes": 0,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 3,
            "possession_lost": 1.4373,
            "dispossessed": 0.9812,
            "duels_lost": 2,
            "aerial_won": 0,
            "aerial_lost": 2,
            "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.0,
            "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": 0,
            "total_progression": 0,
            "progressive_carries": 0,
            "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": 66.0
          },
          "latest_10_games": [
            {
              "match_id": 15186832,
              "match_date": "2026-06-16",
              "home_team": "Iran",
              "away_team": "New Zealand",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "New Zealand",
              "opponent": "Iran",
              "stats": {
                "minutes": 22,
                "rating": 6.3,
                "assists": 0,
                "expected_assists": 0.0046,
                "total_shots": 0,
                "total_pass": 6,
                "accurate_pass": 3,
                "clearances": 2,
                "aerial_won": 2,
                "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"
            }
          ],
          "ranking": {
            "global_player_rank": 20936,
            "combined_rank_score": 4907.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 9493.0,
            "fifa_overall": 66.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 13,
            "squad_role": "substitute",
            "projected_match_rating": 6.2665,
            "source_file": "data/player_rankings.csv",
            "player_name": "Ryan Thomas",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Yasser Al-Shahrani",
                  "ranking": 20931
                },
                {
                  "player_name": "Leon Klassen",
                  "ranking": 20932
                },
                {
                  "player_name": "Branimir Hrgota",
                  "ranking": 20933
                },
                {
                  "player_name": "Maren Haile-Selassie",
                  "ranking": 20934
                },
                {
                  "player_name": "Antonio Čolak",
                  "ranking": 20935
                }
              ],
              "lower": [
                {
                  "player_name": "Unai Hernández",
                  "ranking": 20937
                },
                {
                  "player_name": "Matías Palacios",
                  "ranking": 20938
                },
                {
                  "player_name": "Augusto Schott",
                  "ranking": 20939
                },
                {
                  "player_name": "Darragh Lenihan",
                  "ranking": 20940
                },
                {
                  "player_name": "Derrick Etienne",
                  "ranking": 20941
                }
              ]
            }
          }
        },
        "Alex Rufer": {
          "player_id": 356256,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 14,
          "height": 184,
          "market_value": 655000,
          "stats": {
            "key_pass": 0,
            "expected_assists": 0.0,
            "assists": 0,
            "expected_goals": 0.0,
            "rating": 73.7513,
            "minutes": 22,
            "total_pass": 14,
            "accurate_pass": 11,
            "ball_recovery": 1,
            "duels_won": 2,
            "total_shots": 0,
            "total_long_balls": 2,
            "accurate_long_balls": 1,
            "total_own_half_passes": 8,
            "accurate_own_half_passes": 7,
            "total_opp_half_passes": 6,
            "accurate_opp_half_passes": 4,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 19,
            "possession_lost": 3.5142,
            "dispossessed": 0.9812,
            "duels_lost": 2,
            "aerial_won": 0,
            "aerial_lost": 2,
            "interceptions": 0,
            "tackles_won": 1,
            "tackles": 1,
            "clearances": 0,
            "total_contest": 0,
            "won_contest": 0,
            "challenges_lost": 2,
            "fouls": 1,
            "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.0,
            "ball_carries": 3,
            "total_progression": 4,
            "progressive_carries": 0,
            "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": 67.0
          },
          "latest_10_games": [
            {
              "match_id": 14671779,
              "match_date": "2026-04-18",
              "home_team": "Wellington Phoenix",
              "away_team": "Western Sydney Wanderers",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Wellington Phoenix",
              "opponent": "Western Sydney Wanderers",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assists": 0,
                "total_shots": 3,
                "shots_off_target": 1,
                "total_pass": 52,
                "accurate_pass": 44,
                "tackles": 3,
                "tackles_won": 3,
                "interceptions": 2,
                "clearances": 3,
                "aerial_won": 1,
                "duels_won": 6,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "A-League Men",
              "league_id": "136",
              "league_slug": "a-league-men",
              "league_country": "Australia",
              "season_id": "82603",
              "season_name": "A-League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14671778,
              "match_date": "2026-04-12",
              "home_team": "Melbourne City",
              "away_team": "Wellington Phoenix",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Wellington Phoenix",
              "opponent": "Melbourne City",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "assists": 0,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 62,
                "accurate_pass": 45,
                "tackles": 7,
                "tackles_won": 4,
                "interceptions": 1,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 11,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "A-League Men",
              "league_id": "136",
              "league_slug": "a-league-men",
              "league_country": "Australia",
              "season_id": "82603",
              "season_name": "A-League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14671774,
              "match_date": "2026-04-05",
              "home_team": "Melbourne Victory",
              "away_team": "Wellington Phoenix",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Wellington Phoenix",
              "opponent": "Melbourne Victory",
              "stats": {
                "minutes": 90,
                "rating": 7.2,
                "assists": 0,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 64,
                "accurate_pass": 52,
                "tackles": 4,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 1,
                "duels_won": 6,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "A-League Men",
              "league_id": "136",
              "league_slug": "a-league-men",
              "league_country": "Australia",
              "season_id": "82603",
              "season_name": "A-League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 20154,
            "combined_rank_score": 4206.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 207.0,
            "sofascore_rating": 7.1522,
            "sofascore_appearances": 23.0,
            "fifa_rank": 8205.0,
            "fifa_overall": 67.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 14,
            "squad_role": "substitute",
            "projected_match_rating": 6.7513,
            "source_file": "data/player_rankings.csv",
            "player_name": "Alex Rufer",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Samuel Edozie",
                  "ranking": 20149
                },
                {
                  "player_name": "Sebastián Valdez",
                  "ranking": 20150
                },
                {
                  "player_name": "Matías Lazo",
                  "ranking": 20151
                },
                {
                  "player_name": "Stefan Schimmer",
                  "ranking": 20152
                },
                {
                  "player_name": "Stefanos Tzimas",
                  "ranking": 20153
                }
              ],
              "lower": [
                {
                  "player_name": "Sergi Gómez",
                  "ranking": 20155
                },
                {
                  "player_name": "Abdoulaye Sissako",
                  "ranking": 20156
                },
                {
                  "player_name": "Aziz Behich",
                  "ranking": 20157
                },
                {
                  "player_name": "Kastriot Imeri",
                  "ranking": 20158
                },
                {
                  "player_name": "Park Chan-Yong",
                  "ranking": 20159
                }
              ]
            }
          }
        },
        "Benjamin Old": {
          "player_id": 1122425,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 19,
          "height": 172,
          "market_value": 1900000,
          "stats": {
            "expected_goals": 0.0,
            "goal_rate": 0.0001,
            "goals": 0,
            "shots_on_target": 0,
            "expected_assists": 0.0,
            "key_pass": 0,
            "rating": 87.3444,
            "minutes": 25,
            "total_shots": 0,
            "duels_won": 1,
            "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": 0,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 3,
            "possession_lost": 0.5515,
            "dispossessed": 0.0,
            "duels_lost": 0,
            "aerial_lost": 1,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 0,
            "challenges_lost": 0,
            "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.0,
            "offsides": 0,
            "ball_carries": 1,
            "total_progression": 4,
            "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": 81.0
          },
          "latest_10_games": [
            {
              "match_id": 15186832,
              "match_date": "2026-06-16",
              "home_team": "Iran",
              "away_team": "New Zealand",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "New Zealand",
              "opponent": "Iran",
              "stats": {
                "minutes": 22,
                "rating": 6.4,
                "assists": 0,
                "expected_assists": 0.0002,
                "total_shots": 0,
                "total_pass": 8,
                "accurate_pass": 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"
            }
          ],
          "ranking": {
            "global_player_rank": 1111,
            "combined_rank_score": 360.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": 9,
            "squad_role": "substitute",
            "projected_match_rating": 6.3444,
            "source_file": "data/player_rankings.csv",
            "player_name": "Benjamin Old",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Zé Ivaldo",
                  "ranking": 1106
                },
                {
                  "player_name": "Ebenezer Annan",
                  "ranking": 1107
                },
                {
                  "player_name": "Nicolás Ibáñez",
                  "ranking": 1108
                },
                {
                  "player_name": "Azizjon Ganiev",
                  "ranking": 1109
                },
                {
                  "player_name": "Dominik Fitz",
                  "ranking": 1110
                }
              ],
              "lower": [
                {
                  "player_name": "Aarón Mejía",
                  "ranking": 1112
                },
                {
                  "player_name": "Jacob Davis",
                  "ranking": 1113
                },
                {
                  "player_name": "Pavel Kačor",
                  "ranking": 1114
                },
                {
                  "player_name": "Umar Adhamzoda",
                  "ranking": 1115
                },
                {
                  "player_name": "Abrorbek Ismoilov",
                  "ranking": 1116
                }
              ]
            }
          }
        },
        "Jesse Randall": {
          "player_id": 1002506,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 21,
          "height": 176,
          "market_value": 930000,
          "stats": {
            "expected_goals": 0.0,
            "goal_rate": 0.0001,
            "goals": 0,
            "shots_on_target": 0,
            "expected_assists": 0.0168,
            "key_pass": 0,
            "rating": 66.6582,
            "minutes": 25,
            "total_shots": 0,
            "duels_won": 1,
            "aerial_won": 0,
            "total_pass": 6,
            "accurate_pass": 4,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 2,
            "accurate_opp_half_passes": 2,
            "crosses_total": 2,
            "crosses_accurate": 1,
            "touches": 9,
            "possession_lost": 5.6529,
            "dispossessed": 1.9625,
            "duels_lost": 2,
            "aerial_lost": 2,
            "total_contest": 1,
            "won_contest": 0,
            "ball_recovery": 1,
            "challenges_lost": 1,
            "fouls": 0,
            "fouls_drawn": 0,
            "assists": 0,
            "shots_off_target": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 1,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "offsides": 1,
            "ball_carries": 2,
            "total_progression": 16,
            "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": 60.0
          },
          "latest_10_games": [
            {
              "match_id": 15186832,
              "match_date": "2026-06-16",
              "home_team": "Iran",
              "away_team": "New Zealand",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "New Zealand",
              "opponent": "Iran",
              "stats": {
                "minutes": 1,
                "assists": 0,
                "expected_assists": 0.0703,
                "total_shots": 0,
                "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": 16194271,
              "match_date": "2026-05-23",
              "home_team": "Auckland FC",
              "away_team": "Sydney FC",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Auckland FC",
              "opponent": "Sydney FC",
              "stats": {
                "minutes": 89,
                "rating": 6.6,
                "assists": 0,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 22,
                "accurate_pass": 17,
                "key_pass": 2,
                "tackles": 1,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 8
              },
              "has_player_stats": true,
              "league_name": "A-League Men",
              "league_id": "136",
              "league_slug": "a-league-men",
              "league_country": "Australia",
              "season_id": "82603",
              "season_name": "A-League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 16114067,
              "match_date": "2026-05-15",
              "home_team": "Adelaide United",
              "away_team": "Auckland FC",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Auckland FC",
              "opponent": "Adelaide United",
              "stats": {
                "minutes": 89,
                "rating": 7.1,
                "assists": 1,
                "total_shots": 2,
                "shots_on_target": 1,
                "total_pass": 25,
                "accurate_pass": 15,
                "key_pass": 2,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 3,
                "duels_won": 2,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "A-League Men",
              "league_id": "136",
              "league_slug": "a-league-men",
              "league_country": "Australia",
              "season_id": "82603",
              "season_name": "A-League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 16114066,
              "match_date": "2026-05-09",
              "home_team": "Auckland FC",
              "away_team": "Adelaide United",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Auckland FC",
              "opponent": "Adelaide United",
              "stats": {
                "minutes": 90,
                "rating": 6.6,
                "assists": 0,
                "total_shots": 5,
                "shots_on_target": 2,
                "shots_off_target": 1,
                "total_pass": 26,
                "accurate_pass": 21,
                "key_pass": 4,
                "tackles": 1,
                "interceptions": 1,
                "duels_won": 1,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "A-League Men",
              "league_id": "136",
              "league_slug": "a-league-men",
              "league_country": "Australia",
              "season_id": "82603",
              "season_name": "A-League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14671801,
              "match_date": "2026-04-26",
              "home_team": "Sydney FC",
              "away_team": "Auckland FC",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Auckland FC",
              "opponent": "Sydney FC",
              "stats": {
                "minutes": 90,
                "rating": 7.6,
                "assists": 0,
                "total_shots": 0,
                "total_pass": 24,
                "accurate_pass": 16,
                "key_pass": 3,
                "interceptions": 1,
                "clearances": 2,
                "aerial_won": 2,
                "duels_won": 4,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "A-League Men",
              "league_id": "136",
              "league_slug": "a-league-men",
              "league_country": "Australia",
              "season_id": "82603",
              "season_name": "A-League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14671784,
              "match_date": "2026-04-19",
              "home_team": "Auckland FC",
              "away_team": "Central Coast Mariners",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Auckland FC",
              "opponent": "Central Coast Mariners",
              "stats": {
                "minutes": 90,
                "rating": 7.4,
                "assists": 0,
                "total_shots": 3,
                "shots_on_target": 1,
                "total_pass": 20,
                "accurate_pass": 15,
                "key_pass": 3,
                "tackles": 1,
                "duels_won": 5,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "A-League Men",
              "league_id": "136",
              "league_slug": "a-league-men",
              "league_country": "Australia",
              "season_id": "82603",
              "season_name": "A-League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14671776,
              "match_date": "2026-04-11",
              "home_team": "Auckland FC",
              "away_team": "Melbourne Victory",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Auckland FC",
              "opponent": "Melbourne Victory",
              "stats": {
                "minutes": 59,
                "rating": 6.9,
                "assists": 0,
                "total_shots": 0,
                "total_pass": 18,
                "accurate_pass": 12,
                "key_pass": 2,
                "aerial_won": 1,
                "duels_won": 3,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "A-League Men",
              "league_id": "136",
              "league_slug": "a-league-men",
              "league_country": "Australia",
              "season_id": "82603",
              "season_name": "A-League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14671766,
              "match_date": "2026-04-03",
              "home_team": "Adelaide United",
              "away_team": "Auckland FC",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Auckland FC",
              "opponent": "Adelaide United",
              "stats": {
                "minutes": 83,
                "rating": 6.4,
                "assists": 0,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 18,
                "accurate_pass": 12,
                "key_pass": 1,
                "duels_won": 2,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "A-League Men",
              "league_id": "136",
              "league_slug": "a-league-men",
              "league_country": "Australia",
              "season_id": "82603",
              "season_name": "A-League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 23762,
            "combined_rank_score": 7545.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 196.0,
            "sofascore_rating": 7.17,
            "sofascore_appearances": 30.0,
            "fifa_rank": 14894.0,
            "fifa_overall": 60.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 11,
            "squad_role": "substitute",
            "projected_match_rating": 6.6582,
            "source_file": "data/player_rankings.csv",
            "player_name": "Jesse Randall",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Antoine Hainaut",
                  "ranking": 23757
                },
                {
                  "player_name": "Sinclair Armstrong",
                  "ranking": 23758
                },
                {
                  "player_name": "Dylan Tait",
                  "ranking": 23759
                },
                {
                  "player_name": "Mauro Peinipil",
                  "ranking": 23760
                },
                {
                  "player_name": "Dotor",
                  "ranking": 23761
                }
              ],
              "lower": [
                {
                  "player_name": "Diogo Pinto",
                  "ranking": 23763
                },
                {
                  "player_name": "Brad Guzan",
                  "ranking": 23764
                },
                {
                  "player_name": "Daniel Ihendu",
                  "ranking": 23765
                },
                {
                  "player_name": "Alan Núñez",
                  "ranking": 23766
                },
                {
                  "player_name": "Miguel Ángel Torrén",
                  "ranking": 23767
                }
              ]
            }
          }
        }
      },
      "team_totals": {
        "projected_goals": 1,
        "expected_goals": 1.05,
        "expected_assists": 0.41,
        "total_shots": 12,
        "shots_on_target": 7,
        "total_passes": 443,
        "interceptions": 14,
        "tackles": 12,
        "avg_rating": 77.26,
        "possession_estimated_pct": 49.3,
        "pressing_actions_per_90": 6.2
      }
    },
    "Egypt": {
      "formation": "4-2-3-1",
      "players": {
        "Omar Marmoush": {
          "player_id": 873554,
          "position": "F",
          "position_depth": "F",
          "is_starter": true,
          "shirt_number": 22,
          "height": 183,
          "market_value": 55000000,
          "stats": {
            "expected_goals": 0.5208,
            "goal_rate": 0.354,
            "goals": 1,
            "shots_on_target": 0,
            "expected_assists": 0.0376,
            "key_pass": 1,
            "rating": 91.2956,
            "minutes": 77,
            "total_shots": 3,
            "duels_won": 6,
            "aerial_won": 2,
            "total_pass": 12,
            "accurate_pass": 10,
            "total_long_balls": 1,
            "accurate_long_balls": 1,
            "total_opp_half_passes": 6,
            "accurate_opp_half_passes": 5,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 16,
            "possession_lost": 4.1875,
            "dispossessed": 1.3775,
            "duels_lost": 3,
            "aerial_lost": 1,
            "total_contest": 4,
            "won_contest": 3,
            "ball_recovery": 2,
            "challenges_lost": 1,
            "fouls": 2,
            "fouls_drawn": 2,
            "assists": 0,
            "shots_off_target": 2,
            "interceptions": 1,
            "tackles_won": 1,
            "tackles": 1,
            "clearances": 0,
            "blocks": 0,
            "big_chances_created": 1,
            "big_chances_missed": 0,
            "xgot": 0.2975,
            "offsides": 0,
            "ball_carries": 6,
            "total_progression": 12,
            "progressive_carries": 1,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.6,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.368,
            "pressing_faced": "LOW",
            "matchup_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
            "numerical_situation": "1v2",
            "opponent_defenders": "Michael Boxall, Finn Surman",
            "opponent_faced": "Michael Boxall, Finn Surman",
            "antagonist_source": "attacking_duel",
            "projected_goals": 1,
            "goal_probability": 0.4136,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 84.0
          },
          "latest_10_games": [
            {
              "match_id": 15186837,
              "match_date": "2026-06-15",
              "home_team": "Belgium",
              "away_team": "Egypt",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Egypt",
              "opponent": "Belgium",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assists": 0,
                "expected_goals": 0.4864,
                "expected_assists": 0.0436,
                "total_shots": 5,
                "shots_off_target": 2,
                "total_pass": 14,
                "accurate_pass": 12,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "aerial_won": 1,
                "duels_won": 7,
                "ball_recovery": 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": 14023936,
              "match_date": "2026-05-19",
              "home_team": "Bournemouth",
              "away_team": "Manchester City",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Manchester City",
              "opponent": "Bournemouth",
              "stats": {
                "minutes": 14,
                "rating": 6.7,
                "assists": 0,
                "expected_goals": 0.0944,
                "expected_assists": 0.0,
                "total_shots": 1,
                "total_pass": 1,
                "accurate_pass": 1,
                "duels_won": 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": 15999228,
              "match_date": "2026-05-13",
              "home_team": "Manchester City",
              "away_team": "Crystal Palace",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Manchester City",
              "opponent": "Crystal Palace",
              "stats": {
                "minutes": 79,
                "rating": 7.3,
                "goal_rate": 1.0,
                "goals": 1,
                "assists": 0,
                "expected_goals": 0.2954,
                "expected_assists": 0.0164,
                "total_shots": 3,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 12,
                "accurate_pass": 10,
                "duels_won": 2,
                "ball_recovery": 5
              },
              "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": 14023946,
              "match_date": "2026-05-09",
              "home_team": "Manchester City",
              "away_team": "Brentford",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Manchester City",
              "opponent": "Brentford",
              "stats": {
                "minutes": 30,
                "rating": 7.7,
                "goal_rate": 1.0,
                "goals": 1,
                "assists": 0,
                "expected_goals": 0.0988,
                "expected_assists": 0.0678,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 2,
                "accurate_pass": 2,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "aerial_won": 1,
                "duels_won": 4
              },
              "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": 15631365,
              "match_date": "2026-03-17",
              "home_team": "Manchester City",
              "away_team": "Real Madrid",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Manchester City",
              "opponent": "Real Madrid",
              "stats": {
                "minutes": 34,
                "rating": 6.7,
                "assists": 0,
                "expected_assists": 0.0026,
                "total_shots": 0,
                "total_pass": 6,
                "accurate_pass": 6,
                "duels_won": 3,
                "ball_recovery": 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": 15631329,
              "match_date": "2026-03-11",
              "home_team": "Real Madrid",
              "away_team": "Manchester City",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Manchester City",
              "opponent": "Real Madrid",
              "stats": {
                "minutes": 8,
                "rating": 6.5,
                "assists": 0,
                "expected_goals": 0.0134,
                "expected_assists": 0.0049,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 3,
                "accurate_pass": 3,
                "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"
            }
          ],
          "ranking": {
            "global_player_rank": 167,
            "combined_rank_score": 128.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 216.0,
            "fifa_overall": 84.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 1,
            "squad_role": "starter",
            "projected_match_rating": 7.2956,
            "source_file": "data/player_rankings.csv",
            "player_name": "Omar Marmoush",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Igor Vujačić",
                  "ranking": 162
                },
                {
                  "player_name": "César Montes",
                  "ranking": 163
                },
                {
                  "player_name": "Kevin Méndez",
                  "ranking": 164
                },
                {
                  "player_name": "Jonathan Tah",
                  "ranking": 165
                },
                {
                  "player_name": "Marc Cucurella",
                  "ranking": 166
                }
              ],
              "lower": [
                {
                  "player_name": "Reinaldo",
                  "ranking": 168
                },
                {
                  "player_name": "Dostonbek Khamdamov",
                  "ranking": 169
                },
                {
                  "player_name": "Yarek Gasiorowski",
                  "ranking": 170
                },
                {
                  "player_name": "Rey Manaj",
                  "ranking": 171
                },
                {
                  "player_name": "Tiago Gabriel",
                  "ranking": 172
                }
              ]
            }
          }
        },
        "Mostafa Ziko": {
          "player_id": 1418782,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 11,
          "height": 180,
          "market_value": 2000000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.0113,
            "assists": 0,
            "expected_goals": 0.267,
            "rating": 88.0451,
            "minutes": 76,
            "total_pass": 20,
            "accurate_pass": 15,
            "ball_recovery": 4,
            "duels_won": 2,
            "total_shots": 2,
            "total_long_balls": 1,
            "accurate_long_balls": 1,
            "total_own_half_passes": 11,
            "accurate_own_half_passes": 8,
            "total_opp_half_passes": 9,
            "accurate_opp_half_passes": 7,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 36,
            "possession_lost": 11.7747,
            "dispossessed": 2.9437,
            "duels_lost": 7,
            "aerial_won": 1,
            "aerial_lost": 1,
            "interceptions": 1,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 1,
            "total_contest": 1,
            "won_contest": 0,
            "challenges_lost": 2,
            "fouls": 0,
            "fouls_drawn": 2,
            "goal_rate": 0.0,
            "goals": 0,
            "shots_on_target": 1,
            "shots_off_target": 1,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0589,
            "ball_carries": 12,
            "total_progression": 49,
            "progressive_carries": 2,
            "dribbles_attempted": 3,
            "dribbles_successful": 1.3,
            "crosses_attempted": 1.8,
            "duel_win_rate": 0.484,
            "pressing_faced": "LOW",
            "matchup_zone": "Left Wing vs Right Back — Flank Battle",
            "numerical_situation": "1v1",
            "opponent_defenders": "Callum McCowatt",
            "opponent_faced": "Callum McCowatt",
            "antagonist_source": "attacking_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.0973,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 82.0
          },
          "latest_10_games": [
            {
              "match_id": 15186837,
              "match_date": "2026-06-15",
              "home_team": "Belgium",
              "away_team": "Egypt",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Egypt",
              "opponent": "Belgium",
              "stats": {
                "minutes": 76,
                "rating": 6.1,
                "assists": 0,
                "expected_goals": 0.162,
                "expected_assists": 0.0112,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 20,
                "accurate_pass": 15,
                "key_pass": 1,
                "interceptions": 1,
                "clearances": 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"
            }
          ],
          "ranking": {
            "global_player_rank": 1600,
            "combined_rank_score": 354.0,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 449.0,
            "fifa_overall": 82.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 11,
            "squad_role": "starter",
            "projected_match_rating": 6.0451,
            "source_file": "data/player_rankings.csv",
            "player_name": "Mostafa Ziko",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Iago Silva",
                  "ranking": 1595
                },
                {
                  "player_name": "Rodolfo Aloko",
                  "ranking": 1596
                },
                {
                  "player_name": "Taha Abdi Ali",
                  "ranking": 1597
                },
                {
                  "player_name": "Saba Kharebashvili",
                  "ranking": 1598
                },
                {
                  "player_name": "Ivan Guteša",
                  "ranking": 1599
                }
              ],
              "lower": [
                {
                  "player_name": "Kostas Galanopoulos",
                  "ranking": 1601
                },
                {
                  "player_name": "Giacomo Faticanti",
                  "ranking": 1602
                },
                {
                  "player_name": "Bruno Goncalves",
                  "ranking": 1603
                },
                {
                  "player_name": "Nikita Stoinov",
                  "ranking": 1604
                },
                {
                  "player_name": "Gustavo del Prete",
                  "ranking": 1605
                }
              ]
            }
          }
        },
        "Emam Ashour": {
          "player_id": 967032,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 8,
          "height": 182,
          "market_value": 4200000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.031,
            "assists": 0,
            "expected_goals": 0.3574,
            "rating": 89.5834,
            "minutes": 73,
            "total_pass": 29,
            "accurate_pass": 20,
            "ball_recovery": 6,
            "duels_won": 8,
            "total_shots": 2,
            "total_long_balls": 3,
            "accurate_long_balls": 2,
            "total_own_half_passes": 10,
            "accurate_own_half_passes": 8,
            "total_opp_half_passes": 19,
            "accurate_opp_half_passes": 13,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 45,
            "possession_lost": 13.3068,
            "dispossessed": 1.4785,
            "duels_lost": 6,
            "aerial_won": 1,
            "aerial_lost": 1,
            "interceptions": 1,
            "tackles_won": 1,
            "tackles": 1,
            "clearances": 1,
            "total_contest": 2,
            "won_contest": 1,
            "challenges_lost": 1,
            "fouls": 3,
            "fouls_drawn": 3,
            "goal_rate": 0.9957,
            "goals": 0,
            "shots_on_target": 1,
            "shots_off_target": 1,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 1,
            "xgot": 0.1676,
            "ball_carries": 15,
            "total_progression": 40,
            "progressive_carries": 1,
            "dribbles_attempted": 3,
            "dribbles_successful": 1.4,
            "crosses_attempted": 1.9,
            "duel_win_rate": 0.514,
            "pressing_faced": "LOW",
            "matchup_zone": "Right Wing vs Left Back — Flank Battle",
            "numerical_situation": "1v1",
            "opponent_defenders": "Tim Payne",
            "opponent_faced": "Tim Payne",
            "antagonist_source": "attacking_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.2791,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 82.0
          },
          "latest_10_games": [
            {
              "match_id": 15186837,
              "match_date": "2026-06-15",
              "home_team": "Belgium",
              "away_team": "Egypt",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Egypt",
              "opponent": "Belgium",
              "stats": {
                "minutes": 71,
                "rating": 7.9,
                "goal_rate": 1.0,
                "goals": 1,
                "assists": 0,
                "expected_goals": 0.2165,
                "expected_assists": 0.0159,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 29,
                "accurate_pass": 19,
                "key_pass": 1,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 1,
                "aerial_won": 3,
                "duels_won": 8,
                "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": 16138371,
              "match_date": "2026-05-20",
              "home_team": "Al-Masry",
              "away_team": "Al Ahly FC",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Al Ahly FC",
              "opponent": "Al-Masry",
              "stats": {
                "minutes": 89,
                "rating": 6.7,
                "assists": 0,
                "expected_goals": 0.0303,
                "expected_assists": 0.1259,
                "total_shots": 2,
                "shots_off_target": 1,
                "total_pass": 30,
                "accurate_pass": 23,
                "key_pass": 2,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 2,
                "duels_won": 5,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "Egyptian Premier League",
              "league_id": "808",
              "league_slug": "premier-league",
              "league_country": "Egypt",
              "season_id": "79317",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 626,
            "combined_rank_score": 299.0,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 369.0,
            "fifa_overall": 82.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 3,
            "squad_role": "starter",
            "projected_match_rating": 7.5834,
            "source_file": "data/player_rankings.csv",
            "player_name": "Emam Ashour",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Ondrej Kricfalusi",
                  "ranking": 621
                },
                {
                  "player_name": "Alan Javier Franco",
                  "ranking": 622
                },
                {
                  "player_name": "Ibrahima Bamba",
                  "ranking": 623
                },
                {
                  "player_name": "Erick Noriega",
                  "ranking": 624
                },
                {
                  "player_name": "Rafa Silva",
                  "ranking": 625
                }
              ],
              "lower": [
                {
                  "player_name": "Kevin Carlos Omoruyi",
                  "ranking": 627
                },
                {
                  "player_name": "Moatasem Al-Musrati",
                  "ranking": 628
                },
                {
                  "player_name": "Uchenna Ogundu",
                  "ranking": 629
                },
                {
                  "player_name": "Talles Magno",
                  "ranking": 630
                },
                {
                  "player_name": "Lucas Ronier",
                  "ranking": 631
                }
              ]
            }
          }
        },
        "Mohamed Salah": {
          "player_id": 159665,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 10,
          "height": 175,
          "market_value": 21000000,
          "stats": {
            "key_pass": 2,
            "expected_assists": 0.0933,
            "assists": 0,
            "expected_goals": 0.1924,
            "rating": 97.927,
            "minutes": 75,
            "total_pass": 21,
            "accurate_pass": 19,
            "ball_recovery": 3,
            "duels_won": 5,
            "total_shots": 2,
            "total_long_balls": 1,
            "accurate_long_balls": 1,
            "total_own_half_passes": 6,
            "accurate_own_half_passes": 6,
            "total_opp_half_passes": 22,
            "accurate_opp_half_passes": 19,
            "crosses_total": 4,
            "crosses_accurate": 1,
            "touches": 48,
            "possession_lost": 15.2896,
            "dispossessed": 2.0845,
            "duels_lost": 5,
            "aerial_won": 1,
            "aerial_lost": 1,
            "interceptions": 1,
            "tackles_won": 0,
            "tackles": 1,
            "clearances": 0,
            "total_contest": 3,
            "won_contest": 3,
            "challenges_lost": 0,
            "fouls": 2,
            "fouls_drawn": 2,
            "goal_rate": 0.0,
            "goals": 0,
            "shots_on_target": 1,
            "shots_off_target": 1,
            "blocks": 0,
            "big_chances_created": 1,
            "big_chances_missed": 1,
            "xgot": 0.5628,
            "ball_carries": 16,
            "total_progression": 121,
            "progressive_carries": 6,
            "dribbles_attempted": 3,
            "dribbles_successful": 0.8,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.29,
            "pressing_faced": "LOW",
            "matchup_zone": "Attacking Mid vs Double Pivot — Tight Space Battle",
            "numerical_situation": "1v2",
            "opponent_defenders": "Marko Stamenić, Joe Bell",
            "opponent_faced": "Marko Stamenić, Joe Bell",
            "antagonist_source": "attacking_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.135,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 91.0
          },
          "latest_10_games": [
            {
              "match_id": 15186837,
              "match_date": "2026-06-15",
              "home_team": "Belgium",
              "away_team": "Egypt",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Egypt",
              "opponent": "Belgium",
              "stats": {
                "minutes": 76,
                "rating": 6.8,
                "assists": 1,
                "expected_goals": 0.1354,
                "expected_assists": 0.0458,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 18,
                "accurate_pass": 17,
                "key_pass": 3,
                "tackles": 1,
                "aerial_won": 1,
                "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": 14023962,
              "match_date": "2026-05-24",
              "home_team": "Liverpool FC",
              "away_team": "Brentford",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Liverpool FC",
              "opponent": "Brentford",
              "stats": {
                "minutes": 74,
                "rating": 8.1,
                "assists": 1,
                "expected_goals": 0.2541,
                "expected_assists": 0.444,
                "total_shots": 4,
                "shots_on_target": 2,
                "shots_off_target": 1,
                "total_pass": 38,
                "accurate_pass": 32,
                "key_pass": 1,
                "tackles": 1,
                "duels_won": 4,
                "ball_recovery": 7
              },
              "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": 14023928,
              "match_date": "2026-05-15",
              "home_team": "Aston Villa",
              "away_team": "Liverpool FC",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Liverpool FC",
              "opponent": "Aston Villa",
              "stats": {
                "minutes": 16,
                "rating": 6.6,
                "assists": 0,
                "expected_assists": 0.072,
                "total_shots": 0,
                "total_pass": 15,
                "accurate_pass": 12
              },
              "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": 15632087,
              "match_date": "2026-04-14",
              "home_team": "Liverpool FC",
              "away_team": "Paris Saint-Germain",
              "team_side": "home",
              "is_starting_11": 0,
              "team": "Liverpool FC",
              "opponent": "Paris Saint-Germain",
              "stats": {
                "minutes": 59,
                "rating": 6.9,
                "assists": 0,
                "expected_goals": 0.1383,
                "expected_assists": 0.515,
                "total_shots": 1,
                "total_pass": 33,
                "accurate_pass": 26,
                "key_pass": 4,
                "tackles": 1,
                "interceptions": 1,
                "duels_won": 2,
                "ball_recovery": 3
              },
              "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": 15631369,
              "match_date": "2026-03-18",
              "home_team": "Liverpool FC",
              "away_team": "Galatasaray",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Liverpool FC",
              "opponent": "Galatasaray",
              "stats": {
                "minutes": 74,
                "rating": 7.2,
                "goal_rate": 1.0,
                "goals": 1,
                "assists": 1,
                "expected_goals": 2.2387,
                "expected_assists": 0.4972,
                "total_shots": 7,
                "shots_on_target": 6,
                "shots_off_target": 1,
                "total_pass": 19,
                "accurate_pass": 18,
                "key_pass": 2,
                "tackles": 1,
                "duels_won": 2
              },
              "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": 15631351,
              "match_date": "2026-03-10",
              "home_team": "Galatasaray",
              "away_team": "Liverpool FC",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Liverpool FC",
              "opponent": "Galatasaray",
              "stats": {
                "minutes": 60,
                "rating": 6.6,
                "assists": 0,
                "expected_assists": 0.1452,
                "total_shots": 0,
                "total_pass": 26,
                "accurate_pass": 22,
                "key_pass": 1,
                "tackles": 1,
                "interceptions": 1,
                "duels_won": 2,
                "ball_recovery": 2
              },
              "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"
            }
          ],
          "ranking": {
            "global_player_rank": 47,
            "combined_rank_score": 58.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 116.0,
            "sofascore_rating": 7.37,
            "sofascore_appearances": 10.0,
            "fifa_rank": 1.0,
            "fifa_overall": 91.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 2,
            "squad_role": "starter",
            "projected_match_rating": 6.927,
            "source_file": "data/player_rankings.csv",
            "player_name": "Mohamed Salah",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Victor Osimhen",
                  "ranking": 42
                },
                {
                  "player_name": "Luan Dias",
                  "ranking": 43
                },
                {
                  "player_name": "Aitor Fernández",
                  "ranking": 44
                },
                {
                  "player_name": "Álvaro Cortés",
                  "ranking": 45
                },
                {
                  "player_name": "César Yanis",
                  "ranking": 46
                }
              ],
              "lower": [
                {
                  "player_name": "Serhou Guirassy",
                  "ranking": 48
                },
                {
                  "player_name": "Rúben Dias",
                  "ranking": 49
                },
                {
                  "player_name": "Rayan",
                  "ranking": 50
                },
                {
                  "player_name": "Vitor Roque",
                  "ranking": 51
                },
                {
                  "player_name": "Bruno Fernandes",
                  "ranking": 52
                }
              ]
            }
          }
        },
        "Mohanad Lasheen": {
          "player_id": 918506,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 17,
          "height": 179,
          "market_value": 3200000,
          "stats": {
            "key_pass": 0,
            "expected_assists": 0.0159,
            "assists": 0,
            "expected_goals": 0.0,
            "rating": 88.8903,
            "minutes": 90,
            "total_pass": 32,
            "accurate_pass": 26,
            "ball_recovery": 3,
            "duels_won": 9,
            "total_shots": 1,
            "total_long_balls": 5,
            "accurate_long_balls": 2,
            "total_own_half_passes": 17,
            "accurate_own_half_passes": 15,
            "total_opp_half_passes": 20,
            "accurate_opp_half_passes": 15,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 51,
            "possession_lost": 8.8378,
            "dispossessed": 0.0,
            "duels_lost": 6,
            "aerial_won": 1,
            "aerial_lost": 1,
            "interceptions": 3,
            "tackles_won": 6,
            "tackles": 7,
            "clearances": 1,
            "total_contest": 1,
            "won_contest": 1,
            "challenges_lost": 5,
            "fouls": 2,
            "fouls_drawn": 1,
            "goal_rate": 0.0,
            "goals": 0,
            "shots_on_target": 0,
            "shots_off_target": 0,
            "blocks": 1,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.0,
            "ball_carries": 12,
            "total_progression": 14,
            "progressive_carries": 0,
            "dribbles_attempted": 2,
            "dribbles_successful": 0.7,
            "crosses_attempted": 0.0,
            "duel_win_rate": 0.385,
            "pressing_faced": "LOW",
            "matchup_zone": "CDM vs CDM",
            "numerical_situation": "1v1",
            "opponent_defenders": "Marko Stamenić",
            "opponent_faced": "Marko Stamenić",
            "antagonist_source": "defensive_duel, attacking_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.0103,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 82.0
          },
          "latest_10_games": [
            {
              "match_id": 15186837,
              "match_date": "2026-06-15",
              "home_team": "Belgium",
              "away_team": "Egypt",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Egypt",
              "opponent": "Belgium",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assists": 0,
                "expected_assists": 0.0146,
                "total_shots": 0,
                "total_pass": 30,
                "accurate_pass": 25,
                "tackles": 8,
                "tackles_won": 6,
                "interceptions": 3,
                "duels_won": 10,
                "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": 16150283,
              "match_date": "2026-05-20",
              "home_team": "Pyramids FC",
              "away_team": "Smouha",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Pyramids FC",
              "opponent": "Smouha",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assists": 0,
                "expected_assists": 0.0058,
                "total_shots": 0,
                "total_pass": 45,
                "accurate_pass": 36,
                "key_pass": 2,
                "tackles": 3,
                "tackles_won": 3,
                "interceptions": 1,
                "clearances": 1,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 6
              },
              "has_player_stats": true,
              "league_name": "Egyptian Premier League",
              "league_id": "808",
              "league_slug": "premier-league",
              "league_country": "Egypt",
              "season_id": "79317",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 744,
            "combined_rank_score": 322.0,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 406.0,
            "fifa_overall": 82.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 9,
            "squad_role": "starter",
            "projected_match_rating": 6.8903,
            "source_file": "data/player_rankings.csv",
            "player_name": "Mohanad Lasheen",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Cheick Keita",
                  "ranking": 739
                },
                {
                  "player_name": "Jean Philippe Mateta",
                  "ranking": 740
                },
                {
                  "player_name": "Robin Mirisola",
                  "ranking": 741
                },
                {
                  "player_name": "José Enamorado",
                  "ranking": 742
                },
                {
                  "player_name": "Kevin Amaro",
                  "ranking": 743
                }
              ],
              "lower": [
                {
                  "player_name": "Lasse Selvåg Nordås",
                  "ranking": 745
                },
                {
                  "player_name": "André Henrique",
                  "ranking": 746
                },
                {
                  "player_name": "Newton",
                  "ranking": 747
                },
                {
                  "player_name": "Filip Matijašević",
                  "ranking": 748
                },
                {
                  "player_name": "Cheick Tidiane Sabaly",
                  "ranking": 749
                }
              ]
            }
          }
        },
        "Marwan Attia": {
          "player_id": 1013699,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 19,
          "height": 172,
          "market_value": 3900000,
          "stats": {
            "key_pass": 1,
            "expected_assists": 0.0203,
            "assists": 0,
            "expected_goals": 0.0289,
            "rating": 88.4204,
            "minutes": 90,
            "total_pass": 47,
            "accurate_pass": 37,
            "ball_recovery": 6,
            "duels_won": 4,
            "total_shots": 1,
            "total_long_balls": 7,
            "accurate_long_balls": 3,
            "total_own_half_passes": 21,
            "accurate_own_half_passes": 17,
            "total_opp_half_passes": 19,
            "accurate_opp_half_passes": 14,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 52,
            "possession_lost": 11.3227,
            "dispossessed": 0.0,
            "duels_lost": 4,
            "aerial_won": 0,
            "aerial_lost": 3,
            "interceptions": 1,
            "tackles_won": 1,
            "tackles": 3,
            "clearances": 1,
            "total_contest": 0,
            "won_contest": 0,
            "challenges_lost": 2,
            "fouls": 2,
            "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.0,
            "ball_carries": 9,
            "total_progression": 10,
            "progressive_carries": 0,
            "opponent_faced": "Sarpreet Singh, Callum McCowatt",
            "matchup_zone": "Left Wing vs Right Back — Flank Battle",
            "antagonist_source": "defensive_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.0195,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 82.0
          },
          "latest_10_games": [
            {
              "match_id": 15186837,
              "match_date": "2026-06-15",
              "home_team": "Belgium",
              "away_team": "Egypt",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Egypt",
              "opponent": "Belgium",
              "stats": {
                "minutes": 90,
                "rating": 6.3,
                "assists": 0,
                "expected_goals": 0.0288,
                "expected_assists": 0.0138,
                "total_shots": 1,
                "total_pass": 50,
                "accurate_pass": 40,
                "key_pass": 1,
                "tackles": 3,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 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": 16138371,
              "match_date": "2026-05-20",
              "home_team": "Al-Masry",
              "away_team": "Al Ahly FC",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Al Ahly FC",
              "opponent": "Al-Masry",
              "stats": {
                "minutes": 90,
                "rating": 7.6,
                "assists": 0,
                "expected_assists": 0.0279,
                "total_shots": 0,
                "total_pass": 31,
                "accurate_pass": 23,
                "tackles": 6,
                "tackles_won": 2,
                "clearances": 1,
                "duels_won": 7,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "Egyptian Premier League",
              "league_id": "808",
              "league_slug": "premier-league",
              "league_country": "Egypt",
              "season_id": "79317",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 651,
            "combined_rank_score": 320.5,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 410.0,
            "fifa_overall": 82.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 6,
            "squad_role": "starter",
            "projected_match_rating": 6.4204,
            "source_file": "data/player_rankings.csv",
            "player_name": "Marwan Attia",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Oybek Bozorov",
                  "ranking": 646
                },
                {
                  "player_name": "Sergio Rochet",
                  "ranking": 647
                },
                {
                  "player_name": "Marlon Freitas",
                  "ranking": 648
                },
                {
                  "player_name": "Mason Greenwood",
                  "ranking": 649
                },
                {
                  "player_name": "Gregore",
                  "ranking": 650
                }
              ],
              "lower": [
                {
                  "player_name": "Eduardo Águila",
                  "ranking": 652
                },
                {
                  "player_name": "Lucas Ocampos",
                  "ranking": 653
                },
                {
                  "player_name": "José Castillo",
                  "ranking": 654
                },
                {
                  "player_name": "Marcelo Flores",
                  "ranking": 655
                },
                {
                  "player_name": "Brenner",
                  "ranking": 656
                }
              ]
            }
          }
        },
        "Ahmed Fatouh": {
          "player_id": 880622,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 13,
          "height": 178,
          "market_value": 1000000,
          "stats": {
            "interceptions": 1,
            "tackles": 3,
            "tackles_won": 2,
            "clearances": 2,
            "aerial_won": 0,
            "rating": 88.8027,
            "minutes": 88,
            "total_pass": 38,
            "accurate_pass": 30,
            "duels_won": 4,
            "total_long_balls": 6,
            "accurate_long_balls": 2,
            "total_own_half_passes": 18,
            "accurate_own_half_passes": 14,
            "total_opp_half_passes": 20,
            "accurate_opp_half_passes": 16,
            "crosses_total": 2,
            "crosses_accurate": 1,
            "touches": 60,
            "possession_lost": 13.7372,
            "dispossessed": 1.9625,
            "duels_lost": 4,
            "aerial_lost": 0,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 3,
            "challenges_lost": 0,
            "fouls": 2,
            "fouls_drawn": 1,
            "blocks": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "assists": 0,
            "expected_goals": 0.0,
            "expected_assists": 0.1498,
            "total_shots": 0,
            "shots_on_target": 0,
            "shots_off_target": 0,
            "big_chances_created": 1,
            "xgot": 0.0,
            "ball_carries": 11,
            "total_progression": 22,
            "progressive_carries": 1,
            "key_pass": 1,
            "tackles_in_zone": 1.9,
            "tackles_won_in_zone": 1.6,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.6,
            "aerial_duels_won": 1.1,
            "defensive_success_rate": 0.526,
            "opponent_faced": "Elijah Just",
            "pressing_zone": "Right Wing vs Left Back — Flank Battle",
            "matchup_zone": "Right Wing vs Left Back — Flank Battle",
            "antagonist_source": "defensive_duel",
            "projected_goals": 0,
            "goal_probability": 0.0064,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 82.0
          },
          "latest_10_games": [
            {
              "match_id": 15186837,
              "match_date": "2026-06-15",
              "home_team": "Belgium",
              "away_team": "Egypt",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Egypt",
              "opponent": "Belgium",
              "stats": {
                "minutes": 88,
                "rating": 6.8,
                "assists": 0,
                "expected_assists": 0.1508,
                "total_shots": 0,
                "total_pass": 38,
                "accurate_pass": 30,
                "key_pass": 1,
                "tackles": 3,
                "tackles_won": 2,
                "interceptions": 1,
                "clearances": 2,
                "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"
            }
          ],
          "ranking": {
            "global_player_rank": 1663,
            "combined_rank_score": 327.5,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 395.0,
            "fifa_overall": 82.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 17,
            "squad_role": "starter",
            "projected_match_rating": 6.8027,
            "source_file": "data/player_rankings.csv",
            "player_name": "Ahmed Fatouh",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Jakub Pira",
                  "ranking": 1658
                },
                {
                  "player_name": "Hamza Abdelkarim",
                  "ranking": 1659
                },
                {
                  "player_name": "Jack Fletcher",
                  "ranking": 1660
                },
                {
                  "player_name": "Jaloliddin Masharipov",
                  "ranking": 1661
                },
                {
                  "player_name": "Alex Santana",
                  "ranking": 1662
                }
              ],
              "lower": [
                {
                  "player_name": "Erick Belé",
                  "ranking": 1664
                },
                {
                  "player_name": "Uroš Đurđević",
                  "ranking": 1665
                },
                {
                  "player_name": "Ismaël Olivier Toure",
                  "ranking": 1666
                },
                {
                  "player_name": "Willy Semedo",
                  "ranking": 1667
                },
                {
                  "player_name": "Puso Dithejane",
                  "ranking": 1668
                }
              ]
            }
          }
        },
        "Hamdy Fathy": {
          "player_id": 918913,
          "position": "M",
          "position_depth": "M",
          "is_starter": true,
          "shirt_number": 14,
          "height": 180,
          "market_value": 1900000,
          "stats": {
            "key_pass": 2,
            "expected_assists": 0.0036,
            "assists": 0,
            "expected_goals": 0.0,
            "rating": 89.2515,
            "minutes": 88,
            "total_pass": 59,
            "accurate_pass": 53,
            "ball_recovery": 4,
            "duels_won": 8,
            "total_shots": 0,
            "total_long_balls": 7,
            "accurate_long_balls": 5,
            "total_own_half_passes": 50,
            "accurate_own_half_passes": 50,
            "total_opp_half_passes": 54,
            "accurate_opp_half_passes": 47,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 116,
            "possession_lost": 7.8498,
            "dispossessed": 0.9812,
            "duels_lost": 2,
            "aerial_won": 1,
            "aerial_lost": 0,
            "interceptions": 1,
            "tackles_won": 4,
            "tackles": 4,
            "clearances": 4,
            "total_contest": 1,
            "won_contest": 1,
            "challenges_lost": 1,
            "fouls": 0,
            "fouls_drawn": 3,
            "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.0,
            "ball_carries": 75,
            "total_progression": 68,
            "progressive_carries": 1,
            "opponent_faced": "Liberato Cacace, Joe Bell",
            "matchup_zone": "Attacking Mid vs Double Pivot — Tight Space Battle",
            "antagonist_source": "defensive_duel, midfield_pairing",
            "projected_goals": 0,
            "goal_probability": 0.0102,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 82.0
          },
          "latest_10_games": [
            {
              "match_id": 15186837,
              "match_date": "2026-06-15",
              "home_team": "Belgium",
              "away_team": "Egypt",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Egypt",
              "opponent": "Belgium",
              "stats": {
                "minutes": 88,
                "rating": 6.8,
                "assists": 0,
                "expected_assists": 0.0051,
                "total_shots": 0,
                "total_pass": 39,
                "accurate_pass": 34,
                "key_pass": 2,
                "tackles": 4,
                "interceptions": 2,
                "clearances": 4,
                "aerial_won": 1,
                "duels_won": 7,
                "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": 16005355,
              "match_date": "2026-04-27",
              "home_team": "Al-Wakrah",
              "away_team": "Al-Sailiya",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Al-Wakrah",
              "opponent": "Al-Sailiya",
              "stats": {
                "minutes": 90,
                "rating": 8.4,
                "assists": 0,
                "total_shots": 0,
                "total_pass": 106,
                "accurate_pass": 99,
                "key_pass": 1,
                "tackles": 4,
                "tackles_won": 4,
                "clearances": 3,
                "aerial_won": 2,
                "duels_won": 9,
                "ball_recovery": 11
              },
              "has_player_stats": true,
              "league_name": "Stars League",
              "league_id": "825",
              "league_slug": "stars-league",
              "league_country": "Qatar",
              "season_id": "77227",
              "season_name": "Stars League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 15941217,
              "match_date": "2026-04-08",
              "home_team": "Al-Wakrah",
              "away_team": "Al-Gharafa",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Al-Wakrah",
              "opponent": "Al-Gharafa",
              "stats": {
                "minutes": 90,
                "rating": 6.2,
                "assists": 0,
                "total_shots": 1,
                "shots_on_target": 1,
                "total_pass": 59,
                "accurate_pass": 57,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 4,
                "duels_won": 1,
                "ball_recovery": 5
              },
              "has_player_stats": true,
              "league_name": "Stars League",
              "league_id": "825",
              "league_slug": "stars-league",
              "league_country": "Qatar",
              "season_id": "77227",
              "season_name": "Stars League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 15896915,
              "match_date": "2026-04-03",
              "home_team": "Qatar SC",
              "away_team": "Al-Wakrah",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Al-Wakrah",
              "opponent": "Qatar SC",
              "stats": {
                "minutes": 90,
                "rating": 7.4,
                "assists": 0,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 39,
                "accurate_pass": 32,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 1,
                "interceptions": 2,
                "clearances": 4,
                "aerial_won": 1,
                "duels_won": 6,
                "ball_recovery": 8
              },
              "has_player_stats": true,
              "league_name": "Stars League",
              "league_id": "825",
              "league_slug": "stars-league",
              "league_country": "Qatar",
              "season_id": "77227",
              "season_name": "Stars League 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 15737494,
              "match_date": "2026-03-17",
              "home_team": "Al-Rayyan",
              "away_team": "Al-Wakrah",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Al-Wakrah",
              "opponent": "Al-Rayyan",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assists": 0,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 44,
                "accurate_pass": 35,
                "key_pass": 1,
                "tackles": 2,
                "tackles_won": 1,
                "clearances": 10,
                "aerial_won": 2,
                "duels_won": 5,
                "ball_recovery": 4
              },
              "has_player_stats": true,
              "league_name": "Stars League",
              "league_id": "825",
              "league_slug": "stars-league",
              "league_country": "Qatar",
              "season_id": "77227",
              "season_name": "Stars League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 1052,
            "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": 7.2515,
            "source_file": "data/player_rankings.csv",
            "player_name": "Hamdy Fathy",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Oscar Kabwit",
                  "ranking": 1047
                },
                {
                  "player_name": "Amine Zouhzouh",
                  "ranking": 1048
                },
                {
                  "player_name": "Joaquín Correa",
                  "ranking": 1049
                },
                {
                  "player_name": "Igor Vinícius",
                  "ranking": 1050
                },
                {
                  "player_name": "Baghdad Bounedjah",
                  "ranking": 1051
                }
              ],
              "lower": [
                {
                  "player_name": "Franco Tongya",
                  "ranking": 1053
                },
                {
                  "player_name": "Mateo Gamarra",
                  "ranking": 1054
                },
                {
                  "player_name": "Dario Marešić",
                  "ranking": 1055
                },
                {
                  "player_name": "Milán Vitális",
                  "ranking": 1056
                },
                {
                  "player_name": "Noah Fernandez",
                  "ranking": 1057
                }
              ]
            }
          }
        },
        "Yasser Ibrahim": {
          "player_id": 333441,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 2,
          "height": 185,
          "market_value": 270000,
          "stats": {
            "interceptions": 1,
            "tackles": 1,
            "tackles_won": 1,
            "clearances": 3,
            "aerial_won": 1,
            "rating": 87.7164,
            "minutes": 89,
            "total_pass": 50,
            "accurate_pass": 46,
            "duels_won": 1,
            "total_long_balls": 6,
            "accurate_long_balls": 3,
            "total_own_half_passes": 36,
            "accurate_own_half_passes": 33,
            "total_opp_half_passes": 8,
            "accurate_opp_half_passes": 6,
            "crosses_total": 1,
            "crosses_accurate": 1,
            "touches": 52,
            "possession_lost": 5.3968,
            "dispossessed": 0.0,
            "duels_lost": 3,
            "aerial_lost": 2,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 2,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 0,
            "blocks": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "assists": 0,
            "expected_goals": 0.0,
            "expected_assists": 0.0403,
            "total_shots": 0,
            "shots_on_target": 0,
            "shots_off_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0,
            "ball_carries": 14,
            "total_progression": 0,
            "progressive_carries": 0,
            "key_pass": 0,
            "tackles_in_zone": 0.9,
            "tackles_won_in_zone": 1.0,
            "interceptions_in_zone": 0.6,
            "clearances_in_zone": 0.6,
            "aerial_duels_won": 0.5,
            "defensive_success_rate": 0.742,
            "opponent_faced": "Chris Wood",
            "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.0143,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 81.0
          },
          "latest_10_games": [
            {
              "match_id": 15186837,
              "match_date": "2026-06-15",
              "home_team": "Belgium",
              "away_team": "Egypt",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Egypt",
              "opponent": "Belgium",
              "stats": {
                "minutes": 90,
                "rating": 6.7,
                "assists": 0,
                "expected_assists": 0.0449,
                "total_shots": 0,
                "total_pass": 53,
                "accurate_pass": 48,
                "tackles": 1,
                "tackles_won": 1,
                "interceptions": 1,
                "clearances": 3,
                "duels_won": 1,
                "ball_recovery": 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": 16138371,
              "match_date": "2026-05-20",
              "home_team": "Al-Masry",
              "away_team": "Al Ahly FC",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Al Ahly FC",
              "opponent": "Al-Masry",
              "stats": {
                "minutes": 90,
                "rating": 7.0,
                "assists": 0,
                "expected_assists": 0.0067,
                "total_shots": 0,
                "total_pass": 37,
                "accurate_pass": 33,
                "tackles": 1,
                "tackles_won": 1,
                "clearances": 4,
                "aerial_won": 3,
                "duels_won": 4,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Egyptian Premier League",
              "league_id": "808",
              "league_slug": "premier-league",
              "league_country": "Egypt",
              "season_id": "79317",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 5541,
            "combined_rank_score": 481.0,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 561.0,
            "fifa_overall": 81.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 18,
            "squad_role": "starter",
            "projected_match_rating": 6.7164,
            "source_file": "data/player_rankings.csv",
            "player_name": "Yasser Ibrahim",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Adam Danko",
                  "ranking": 5536
                },
                {
                  "player_name": "Isaac Castillo",
                  "ranking": 5537
                },
                {
                  "player_name": "Nassim Azzoubairi",
                  "ranking": 5538
                },
                {
                  "player_name": "Román Suárez",
                  "ranking": 5539
                },
                {
                  "player_name": "Pierre-Emerick Aubameyang",
                  "ranking": 5540
                }
              ],
              "lower": [
                {
                  "player_name": "Anass Eddaou",
                  "ranking": 5542
                },
                {
                  "player_name": "Matic Zavnik",
                  "ranking": 5543
                },
                {
                  "player_name": "Dennis Owusu",
                  "ranking": 5544
                },
                {
                  "player_name": "Matej Juricka",
                  "ranking": 5545
                },
                {
                  "player_name": "Nyakala Raphadu",
                  "ranking": 5546
                }
              ]
            }
          }
        },
        "Mohamed Hany": {
          "player_id": 826545,
          "position": "D",
          "position_depth": "D",
          "is_starter": true,
          "shirt_number": 3,
          "height": 180,
          "market_value": 1400000,
          "stats": {
            "interceptions": 1,
            "tackles": 5,
            "tackles_won": 5,
            "clearances": 2,
            "aerial_won": 0,
            "rating": 88.068,
            "minutes": 89,
            "total_pass": 31,
            "accurate_pass": 24,
            "duels_won": 7,
            "total_long_balls": 5,
            "accurate_long_balls": 1,
            "total_own_half_passes": 17,
            "accurate_own_half_passes": 14,
            "total_opp_half_passes": 10,
            "accurate_opp_half_passes": 6,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 48,
            "possession_lost": 9.8123,
            "dispossessed": 0.0,
            "duels_lost": 3,
            "aerial_lost": 1,
            "total_contest": 3,
            "won_contest": 2,
            "ball_recovery": 3,
            "challenges_lost": 1,
            "fouls": 1,
            "fouls_drawn": 0,
            "blocks": 0,
            "goal_rate": 0.0,
            "goals": 0,
            "assists": 0,
            "expected_goals": 0.0613,
            "expected_assists": 0.0155,
            "total_shots": 2,
            "shots_on_target": 0,
            "shots_off_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0,
            "ball_carries": 10,
            "total_progression": 14,
            "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.742,
            "opponent_faced": "Chris Wood",
            "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.0143,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 82.0
          },
          "latest_10_games": [
            {
              "match_id": 15186837,
              "match_date": "2026-06-15",
              "home_team": "Belgium",
              "away_team": "Egypt",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Egypt",
              "opponent": "Belgium",
              "stats": {
                "minutes": 90,
                "rating": 6.0,
                "assists": 0,
                "expected_goals": 0.0487,
                "expected_assists": 0.018,
                "total_shots": 2,
                "total_pass": 32,
                "accurate_pass": 25,
                "tackles": 6,
                "tackles_won": 5,
                "interceptions": 1,
                "clearances": 2,
                "duels_won": 8,
                "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": 16138371,
              "match_date": "2026-05-20",
              "home_team": "Al-Masry",
              "away_team": "Al Ahly FC",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Al Ahly FC",
              "opponent": "Al-Masry",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assists": 0,
                "expected_goals": 0.0057,
                "expected_assists": 0.0013,
                "total_shots": 1,
                "total_pass": 24,
                "accurate_pass": 17,
                "tackles": 3,
                "tackles_won": 3,
                "interceptions": 1,
                "clearances": 4,
                "duels_won": 3,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "Egyptian Premier League",
              "league_id": "808",
              "league_slug": "premier-league",
              "league_country": "Egypt",
              "season_id": "79317",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 1331,
            "combined_rank_score": 314.0,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 372.0,
            "fifa_overall": 82.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 14,
            "squad_role": "starter",
            "projected_match_rating": 6.068,
            "source_file": "data/player_rankings.csv",
            "player_name": "Mohamed Hany",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Issiaga Sylla",
                  "ranking": 1326
                },
                {
                  "player_name": "Bruno Goda",
                  "ranking": 1327
                },
                {
                  "player_name": "Andrés Llinás",
                  "ranking": 1328
                },
                {
                  "player_name": "Higashi Shunki",
                  "ranking": 1329
                },
                {
                  "player_name": "Matties Volckaert",
                  "ranking": 1330
                }
              ],
              "lower": [
                {
                  "player_name": "Nicolás Díaz",
                  "ranking": 1332
                },
                {
                  "player_name": "Gerson Sousa",
                  "ranking": 1333
                },
                {
                  "player_name": "Alexis Pérez",
                  "ranking": 1334
                },
                {
                  "player_name": "Amaury Garcia",
                  "ranking": 1335
                },
                {
                  "player_name": "Taiyo Koga",
                  "ranking": 1336
                }
              ]
            }
          }
        },
        "Mostafa Shobeir": {
          "player_id": 1048378,
          "position": "G",
          "position_depth": "G",
          "is_starter": true,
          "shirt_number": 23,
          "height": 185,
          "market_value": 1300000,
          "stats": {
            "saves": 2,
            "goals_prevented": 0.0,
            "rating": 89.2712,
            "minutes": 89,
            "total_pass": 29,
            "accurate_pass": 20,
            "total_long_balls": 17,
            "accurate_long_balls": 8,
            "touches": 35,
            "clearances": 1,
            "ball_recovery": 7,
            "high_claims": 1,
            "punches": 0.9812,
            "aerial_won": 1,
            "sweeper_actions": 0,
            "sweeper_accurate": 0,
            "saves_inside_box": 3,
            "possession_lost": 8.8311,
            "duels_won": 1,
            "duels_lost": 0,
            "total_contest": 0,
            "won_contest": 0,
            "fouls": 0,
            "fouls_drawn": 1,
            "total_own_half_passes": 15,
            "accurate_own_half_passes": 13,
            "assists": 0,
            "expected_assists": 0.0005,
            "total_shots": 0,
            "interceptions": 1,
            "expected_saves": 1.55,
            "high_pressure_saves": 0.59,
            "shots_faced": 3.3,
            "opponent_faced": "Elijah Just, Chris Wood",
            "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": 15186837,
              "match_date": "2026-06-15",
              "home_team": "Belgium",
              "away_team": "Egypt",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Egypt",
              "opponent": "Belgium",
              "stats": {
                "minutes": 90,
                "rating": 7.5,
                "assists": 0,
                "expected_assists": 0.0005,
                "total_shots": 0,
                "total_pass": 30,
                "accurate_pass": 21,
                "interceptions": 1,
                "clearances": 1,
                "duels_won": 1,
                "ball_recovery": 7,
                "saves": 3,
                "goals_prevented": -0.36
              },
              "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": 16138371,
              "match_date": "2026-05-20",
              "home_team": "Al-Masry",
              "away_team": "Al Ahly FC",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Al Ahly FC",
              "opponent": "Al-Masry",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assists": 0,
                "expected_assists": 0.0026,
                "total_shots": 0,
                "total_pass": 26,
                "accurate_pass": 17,
                "clearances": 3,
                "aerial_won": 1,
                "duels_won": 1,
                "ball_recovery": 8
              },
              "has_player_stats": true,
              "league_name": "Egyptian Premier League",
              "league_id": "808",
              "league_slug": "premier-league",
              "league_country": "Egypt",
              "season_id": "79317",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 1401,
            "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": 15,
            "squad_role": "starter",
            "projected_match_rating": 7.2712,
            "source_file": "data/player_rankings.csv",
            "player_name": "Mostafa Shobeir",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Carlos Vivas",
                  "ranking": 1396
                },
                {
                  "player_name": "Mahmoud Zalaka",
                  "ranking": 1397
                },
                {
                  "player_name": "Willian José",
                  "ranking": 1398
                },
                {
                  "player_name": "Ryoma Watanabe",
                  "ranking": 1399
                },
                {
                  "player_name": "Igor Krasnopir",
                  "ranking": 1400
                }
              ],
              "lower": [
                {
                  "player_name": "Youssef El Fahli",
                  "ranking": 1402
                },
                {
                  "player_name": "Juan Sforza",
                  "ranking": 1403
                },
                {
                  "player_name": "Sipho Chaine",
                  "ranking": 1404
                },
                {
                  "player_name": "Renzo Machado",
                  "ranking": 1405
                },
                {
                  "player_name": "Mohamed Shehata",
                  "ranking": 1406
                }
              ]
            }
          }
        }
      },
      "bench_players": {
        "Mohamed Alaa": {
          "player_id": 1980828,
          "position": "G",
          "position_depth": "G_BENCH",
          "is_starter": false,
          "shirt_number": 26,
          "height": 188,
          "market_value": 1200000,
          "stats": {
            "saves": 0,
            "goals_prevented": 0.0,
            "rating": 89.5774,
            "minutes": 4,
            "total_pass": 1,
            "accurate_pass": 0,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "touches": 1,
            "clearances": 0,
            "ball_recovery": 0,
            "high_claims": 0,
            "punches": 0.0479,
            "aerial_won": 0,
            "sweeper_actions": 0,
            "sweeper_accurate": 0,
            "saves_inside_box": 0,
            "possession_lost": 0.7662,
            "duels_won": 0,
            "duels_lost": 0,
            "total_contest": 0,
            "won_contest": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "total_own_half_passes": 0,
            "accurate_own_half_passes": 0,
            "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": 83.0
          },
          "latest_10_games": [
            {
              "match_id": 15728257,
              "match_date": "2026-05-17",
              "home_team": "National Bank of Egypt",
              "away_team": "El Gouna FC",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "El Gouna FC",
              "opponent": "National Bank of Egypt",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assists": 0,
                "expected_assists": 0.0005,
                "total_shots": 0,
                "total_pass": 23,
                "accurate_pass": 7,
                "clearances": 3,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 9,
                "saves": 1,
                "goals_prevented": -0.3156
              },
              "has_player_stats": true,
              "league_name": "Egyptian Premier League",
              "league_id": "808",
              "league_slug": "premier-league",
              "league_country": "Egypt",
              "season_id": "79317",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 2115,
            "combined_rank_score": 290.5,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 290.0,
            "fifa_overall": 83.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 16,
            "squad_role": "substitute",
            "projected_match_rating": 6.5774,
            "source_file": "data/player_rankings.csv",
            "player_name": "Mohamed Alaa",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Nikolaos Christogeorgos",
                  "ranking": 2110
                },
                {
                  "player_name": "Arnel Jakupović",
                  "ranking": 2111
                },
                {
                  "player_name": "Antonio Maurić",
                  "ranking": 2112
                },
                {
                  "player_name": "Mouad Dahak",
                  "ranking": 2113
                },
                {
                  "player_name": "José Rodríguez",
                  "ranking": 2114
                }
              ],
              "lower": [
                {
                  "player_name": "Igor Neves",
                  "ranking": 2116
                },
                {
                  "player_name": "Siphesihle Ndlovu",
                  "ranking": 2117
                },
                {
                  "player_name": "Ante Matej Jurić",
                  "ranking": 2118
                },
                {
                  "player_name": "Mohamed Reda",
                  "ranking": 2119
                },
                {
                  "player_name": "Baptiste Roux",
                  "ranking": 2120
                }
              ]
            }
          }
        },
        "Mohamed Abdelmonem": {
          "player_id": 926506,
          "position": "D",
          "position_depth": "D_BENCH",
          "is_starter": false,
          "shirt_number": 5,
          "height": 183,
          "market_value": 3300000,
          "stats": {
            "interceptions": 0,
            "tackles": 0,
            "tackles_won": 0,
            "clearances": 0,
            "aerial_won": 0,
            "duels_won": 1,
            "rating": 80.5817,
            "minutes": 14,
            "total_pass": 6,
            "accurate_pass": 5,
            "total_shots": 0,
            "bench_appearance_probability": 0.299,
            "bench_expected_minutes": 13.59,
            "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": 16891,
            "combined_rank_score": 1561.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 2885.0,
            "fifa_overall": 74.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 8,
            "squad_role": "substitute",
            "projected_match_rating": 6.5817,
            "source_file": "data/player_rankings.csv",
            "player_name": "Mohamed Abdelmonem",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Nahuel Barrios",
                  "ranking": 16886
                },
                {
                  "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
                }
              ],
              "lower": [
                {
                  "player_name": "David Zima",
                  "ranking": 16892
                },
                {
                  "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
                }
              ]
            }
          }
        },
        "Hossam Abdelmaguid": {
          "player_id": 1063327,
          "position": "D",
          "position_depth": "D_BENCH",
          "is_starter": false,
          "shirt_number": 4,
          "height": 193,
          "market_value": 2100000,
          "stats": {
            "interceptions": 0,
            "tackles": 0,
            "tackles_won": 0,
            "clearances": 0,
            "aerial_won": 0,
            "rating": 88.9376,
            "minutes": 14,
            "total_pass": 4,
            "accurate_pass": 2,
            "duels_won": 0,
            "total_long_balls": 2,
            "accurate_long_balls": 1,
            "total_own_half_passes": 1,
            "accurate_own_half_passes": 1,
            "total_opp_half_passes": 2,
            "accurate_opp_half_passes": 1,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 5,
            "possession_lost": 1.1838,
            "dispossessed": 0.0,
            "duels_lost": 0,
            "aerial_lost": 1,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 0,
            "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.0015,
            "total_shots": 0,
            "shots_on_target": 0,
            "shots_off_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0,
            "ball_carries": 1,
            "total_progression": 4,
            "progressive_carries": 0,
            "key_pass": 0,
            "bench_appearance_probability": 0.299,
            "bench_expected_minutes": 13.57,
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 82.0
          },
          "latest_10_games": [
            {
              "match_id": 16146140,
              "match_date": "2026-05-20",
              "home_team": "Zamalek SC",
              "away_team": "Cleopatra FC",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Zamalek SC",
              "opponent": "Cleopatra FC",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assists": 0,
                "expected_assists": 0.0067,
                "total_shots": 0,
                "total_pass": 24,
                "accurate_pass": 16,
                "tackles": 3,
                "tackles_won": 3,
                "interceptions": 1,
                "clearances": 2,
                "duels_won": 3,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Egyptian Premier League",
              "league_id": "808",
              "league_slug": "premier-league",
              "league_country": "Egypt",
              "season_id": "79317",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 1079,
            "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": 10,
            "squad_role": "substitute",
            "projected_match_rating": 6.9376,
            "source_file": "data/player_rankings.csv",
            "player_name": "Hossam Abdelmaguid",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Ismael Kandouss",
                  "ranking": 1074
                },
                {
                  "player_name": "Ante Oreč",
                  "ranking": 1075
                },
                {
                  "player_name": "Relebohile Mofokeng",
                  "ranking": 1076
                },
                {
                  "player_name": "Hassan Altambakti",
                  "ranking": 1077
                },
                {
                  "player_name": "Bogdan Kostić",
                  "ranking": 1078
                }
              ],
              "lower": [
                {
                  "player_name": "Mateusz Łęgowski",
                  "ranking": 1080
                },
                {
                  "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
                }
              ]
            }
          }
        },
        "Mahmoud Trézéguet": {
          "player_id": 295361,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 7,
          "height": 179,
          "market_value": 4099999,
          "stats": {
            "key_pass": 0,
            "expected_assists": 0.0101,
            "assists": 0,
            "expected_goals": 0.2525,
            "rating": 89.9296,
            "minutes": 22,
            "total_pass": 6,
            "accurate_pass": 5,
            "ball_recovery": 1,
            "duels_won": 1,
            "total_shots": 0,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_own_half_passes": 1,
            "accurate_own_half_passes": 1,
            "total_opp_half_passes": 6,
            "accurate_opp_half_passes": 4,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 10,
            "possession_lost": 1.9292,
            "dispossessed": 0.9853,
            "duels_lost": 2,
            "aerial_won": 0,
            "aerial_lost": 3,
            "interceptions": 1,
            "tackles_won": 1,
            "tackles": 1,
            "clearances": 0,
            "total_contest": 0,
            "won_contest": 0,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 0,
            "goal_rate": 0.4823,
            "goals": 0,
            "shots_on_target": 0,
            "shots_off_target": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.2219,
            "ball_carries": 2,
            "total_progression": 0,
            "progressive_carries": 0,
            "bench_appearance_probability": 0.501,
            "bench_expected_minutes": 22.03,
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 82.0
          },
          "latest_10_games": [
            {
              "match_id": 16138371,
              "match_date": "2026-05-20",
              "home_team": "Al-Masry",
              "away_team": "Al Ahly FC",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Al Ahly FC",
              "opponent": "Al-Masry",
              "stats": {
                "minutes": 90,
                "rating": 8.1,
                "goal_rate": 2.0,
                "goals": 2,
                "assists": 0,
                "expected_goals": 0.9444,
                "expected_assists": 0.0418,
                "total_shots": 4,
                "shots_on_target": 2,
                "shots_off_target": 1,
                "total_pass": 26,
                "accurate_pass": 20,
                "key_pass": 2,
                "tackles": 3,
                "tackles_won": 3,
                "interceptions": 3,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Egyptian Premier League",
              "league_id": "808",
              "league_slug": "premier-league",
              "league_country": "Egypt",
              "season_id": "79317",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 633,
            "combined_rank_score": 327.0,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 424.0,
            "fifa_overall": 82.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 4,
            "squad_role": "substitute",
            "projected_match_rating": 7.9296,
            "source_file": "data/player_rankings.csv",
            "player_name": "Mahmoud Trézéguet",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Moatasem Al-Musrati",
                  "ranking": 628
                },
                {
                  "player_name": "Uchenna Ogundu",
                  "ranking": 629
                },
                {
                  "player_name": "Talles Magno",
                  "ranking": 630
                },
                {
                  "player_name": "Lucas Ronier",
                  "ranking": 631
                },
                {
                  "player_name": "Darko Nejašmić",
                  "ranking": 632
                }
              ],
              "lower": [
                {
                  "player_name": "Odin Luras Bjørtuft",
                  "ranking": 634
                },
                {
                  "player_name": "Benjamin Bourigeaud",
                  "ranking": 635
                },
                {
                  "player_name": "Bruno Fuchs",
                  "ranking": 636
                },
                {
                  "player_name": "Natanael",
                  "ranking": 637
                },
                {
                  "player_name": "Juninho",
                  "ranking": 638
                }
              ]
            }
          }
        },
        "Haissem Hassan": {
          "player_id": 942836,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 10,
          "height": 175,
          "market_value": 4099999,
          "stats": {
            "key_pass": 0,
            "expected_assists": 0.0049,
            "assists": 0,
            "expected_goals": 0.0,
            "rating": 78.4676,
            "minutes": 22,
            "total_pass": 6,
            "accurate_pass": 5,
            "ball_recovery": 0,
            "duels_won": 2,
            "total_shots": 0,
            "total_long_balls": 1,
            "accurate_long_balls": 1,
            "total_own_half_passes": 2,
            "accurate_own_half_passes": 2,
            "total_opp_half_passes": 4,
            "accurate_opp_half_passes": 3,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 12,
            "possession_lost": 3.6171,
            "dispossessed": 0.0,
            "duels_lost": 2,
            "aerial_won": 0,
            "aerial_lost": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "total_contest": 1,
            "won_contest": 0,
            "challenges_lost": 2,
            "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.0,
            "ball_carries": 7,
            "total_progression": 60,
            "progressive_carries": 3,
            "bench_appearance_probability": 0.501,
            "bench_expected_minutes": 22.03,
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 72.0
          },
          "latest_10_games": [
            {
              "match_id": 14083727,
              "match_date": "2026-05-23",
              "home_team": "Mallorca",
              "away_team": "Real Oviedo",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Real Oviedo",
              "opponent": "Mallorca",
              "stats": {
                "minutes": 45,
                "rating": 6.6,
                "assists": 0,
                "expected_goals": 0.0267,
                "expected_assists": 0.0033,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 11,
                "accurate_pass": 11,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 3,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083692,
              "match_date": "2026-05-17",
              "home_team": "Real Oviedo",
              "away_team": "Deportivo Alavés",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Real Oviedo",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 79,
                "rating": 6.8,
                "assists": 0,
                "expected_assists": 0.0204,
                "total_shots": 0,
                "total_pass": 26,
                "accurate_pass": 22,
                "duels_won": 7,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083649,
              "match_date": "2026-05-14",
              "home_team": "Real Madrid",
              "away_team": "Real Oviedo",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Real Oviedo",
              "opponent": "Real Madrid",
              "stats": {
                "minutes": 21,
                "rating": 7.0,
                "assists": 0,
                "expected_goals": 0.0309,
                "expected_assists": 0.0005,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 5,
                "accurate_pass": 3,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 17831,
            "combined_rank_score": 2318.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 492.0,
            "sofascore_rating": 6.8297,
            "sofascore_appearances": 37.0,
            "fifa_rank": 4145.0,
            "fifa_overall": 72.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 5,
            "squad_role": "substitute",
            "projected_match_rating": 6.4676,
            "source_file": "data/player_rankings.csv",
            "player_name": "Haissem Hassan",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Kristoffer Zachariassen",
                  "ranking": 17826
                },
                {
                  "player_name": "Gerasimos Mitoglou",
                  "ranking": 17827
                },
                {
                  "player_name": "Alieu Fadera",
                  "ranking": 17828
                },
                {
                  "player_name": "Bongokuhle Hlongwane",
                  "ranking": 17829
                },
                {
                  "player_name": "Fabián Sambueza",
                  "ranking": 17830
                }
              ],
              "lower": [
                {
                  "player_name": "Omri Gandelman",
                  "ranking": 17832
                },
                {
                  "player_name": "Franco Jara",
                  "ranking": 17833
                },
                {
                  "player_name": "Javier Méndez",
                  "ranking": 17834
                },
                {
                  "player_name": "Ryotaro Ito",
                  "ranking": 17835
                },
                {
                  "player_name": "Idrissa Touré",
                  "ranking": 17836
                }
              ]
            }
          }
        },
        "Hamza Abdelkarim": {
          "player_id": 1961596,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 9,
          "height": 182,
          "market_value": 1500000,
          "stats": {
            "expected_goals": 0.0,
            "goal_rate": 0.0001,
            "goals": 0,
            "shots_on_target": 0,
            "expected_assists": 0.0005,
            "key_pass": 0,
            "rating": 91.5497,
            "minutes": 25,
            "total_shots": 0,
            "duels_won": 1,
            "aerial_won": 1,
            "total_pass": 1,
            "accurate_pass": 1,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 1,
            "accurate_opp_half_passes": 0,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 2,
            "possession_lost": 0.8273,
            "dispossessed": 0.0,
            "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": 0,
            "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": 0,
            "total_progression": 0,
            "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": 15186837,
              "match_date": "2026-06-15",
              "home_team": "Belgium",
              "away_team": "Egypt",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Egypt",
              "opponent": "Belgium",
              "stats": {
                "minutes": 14,
                "rating": 6.6,
                "assists": 0,
                "expected_assists": 0.0016,
                "total_shots": 0,
                "total_pass": 5,
                "accurate_pass": 2,
                "aerial_won": 2,
                "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"
            }
          ],
          "ranking": {
            "global_player_rank": 1659,
            "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": 13,
            "squad_role": "substitute",
            "projected_match_rating": 6.5497,
            "source_file": "data/player_rankings.csv",
            "player_name": "Hamza Abdelkarim",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Yusuke Matsuo",
                  "ranking": 1654
                },
                {
                  "player_name": "Pedro Zarza",
                  "ranking": 1655
                },
                {
                  "player_name": "Lucas Freitas",
                  "ranking": 1656
                },
                {
                  "player_name": "Thiago Andrade",
                  "ranking": 1657
                },
                {
                  "player_name": "Jakub Pira",
                  "ranking": 1658
                }
              ],
              "lower": [
                {
                  "player_name": "Jack Fletcher",
                  "ranking": 1660
                },
                {
                  "player_name": "Jaloliddin Masharipov",
                  "ranking": 1661
                },
                {
                  "player_name": "Alex Santana",
                  "ranking": 1662
                },
                {
                  "player_name": "Ahmed Fatouh",
                  "ranking": 1663
                },
                {
                  "player_name": "Erick Belé",
                  "ranking": 1664
                }
              ]
            }
          }
        },
        "Zizo": {
          "player_id": 547494,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 25,
          "height": 174,
          "market_value": 3700000,
          "stats": {
            "key_pass": 0,
            "expected_assists": 0.0024,
            "assists": 0,
            "expected_goals": 0.0047,
            "rating": 88.5038,
            "minutes": 22,
            "total_pass": 1,
            "accurate_pass": 1,
            "ball_recovery": 1,
            "duels_won": 1,
            "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": 0,
            "accurate_opp_half_passes": 0,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 1,
            "possession_lost": 0.4811,
            "dispossessed": 0.0,
            "duels_lost": 0,
            "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.0,
            "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": 0,
            "total_progression": 1,
            "progressive_carries": 0,
            "bench_appearance_probability": 0.5,
            "bench_expected_minutes": 22.01,
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 84.0
          },
          "latest_10_games": [
            {
              "match_id": 15186837,
              "match_date": "2026-06-15",
              "home_team": "Belgium",
              "away_team": "Egypt",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Egypt",
              "opponent": "Belgium",
              "stats": {
                "minutes": 14,
                "rating": 6.4,
                "assists": 0,
                "expected_goals": 0.0196,
                "expected_assists": 0.0135,
                "total_shots": 1,
                "total_pass": 7,
                "accurate_pass": 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": 16138371,
              "match_date": "2026-05-20",
              "home_team": "Al-Masry",
              "away_team": "Al Ahly FC",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Al Ahly FC",
              "opponent": "Al-Masry",
              "stats": {
                "minutes": 1,
                "assists": 0,
                "expected_assists": 0.0013,
                "total_shots": 0,
                "total_pass": 2,
                "accurate_pass": 1
              },
              "has_player_stats": true,
              "league_name": "Egyptian Premier League",
              "league_id": "808",
              "league_slug": "premier-league",
              "league_country": "Egypt",
              "season_id": "79317",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 690,
            "combined_rank_score": 218.0,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 203.0,
            "fifa_overall": 84.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 7,
            "squad_role": "substitute",
            "projected_match_rating": 4.5038,
            "source_file": "data/player_rankings.csv",
            "player_name": "Zizo",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Muhammed-Cham Saračević",
                  "ranking": 685
                },
                {
                  "player_name": "Felipe Chávez",
                  "ranking": 686
                },
                {
                  "player_name": "Henrik Wendel Meister",
                  "ranking": 687
                },
                {
                  "player_name": "Iker Fimbres",
                  "ranking": 688
                },
                {
                  "player_name": "Iago Borduchi",
                  "ranking": 689
                }
              ],
              "lower": [
                {
                  "player_name": "José Caicedo",
                  "ranking": 691
                },
                {
                  "player_name": "Adam Markhiev",
                  "ranking": 692
                },
                {
                  "player_name": "Giorgi Jgerenaia",
                  "ranking": 693
                },
                {
                  "player_name": "Manuel Neuer",
                  "ranking": 694
                },
                {
                  "player_name": "Luis Alberto",
                  "ranking": 695
                }
              ]
            }
          }
        }
      },
      "substitutes": {
        "Mohamed Alaa": {
          "player_id": 1980828,
          "position": "G",
          "position_depth": "G_BENCH",
          "is_starter": false,
          "shirt_number": 26,
          "height": 188,
          "market_value": 1200000,
          "stats": {
            "saves": 0,
            "goals_prevented": 0.0,
            "rating": 89.5774,
            "minutes": 4,
            "total_pass": 1,
            "accurate_pass": 0,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "touches": 1,
            "clearances": 0,
            "ball_recovery": 0,
            "high_claims": 0,
            "punches": 0.0479,
            "aerial_won": 0,
            "sweeper_actions": 0,
            "sweeper_accurate": 0,
            "saves_inside_box": 0,
            "possession_lost": 0.7662,
            "duels_won": 0,
            "duels_lost": 0,
            "total_contest": 0,
            "won_contest": 0,
            "fouls": 0,
            "fouls_drawn": 0,
            "total_own_half_passes": 0,
            "accurate_own_half_passes": 0,
            "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": 83.0
          },
          "latest_10_games": [
            {
              "match_id": 15728257,
              "match_date": "2026-05-17",
              "home_team": "National Bank of Egypt",
              "away_team": "El Gouna FC",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "El Gouna FC",
              "opponent": "National Bank of Egypt",
              "stats": {
                "minutes": 90,
                "rating": 6.8,
                "assists": 0,
                "expected_assists": 0.0005,
                "total_shots": 0,
                "total_pass": 23,
                "accurate_pass": 7,
                "clearances": 3,
                "aerial_won": 1,
                "duels_won": 2,
                "ball_recovery": 9,
                "saves": 1,
                "goals_prevented": -0.3156
              },
              "has_player_stats": true,
              "league_name": "Egyptian Premier League",
              "league_id": "808",
              "league_slug": "premier-league",
              "league_country": "Egypt",
              "season_id": "79317",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 2115,
            "combined_rank_score": 290.5,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 290.0,
            "fifa_overall": 83.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 16,
            "squad_role": "substitute",
            "projected_match_rating": 6.5774,
            "source_file": "data/player_rankings.csv",
            "player_name": "Mohamed Alaa",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Nikolaos Christogeorgos",
                  "ranking": 2110
                },
                {
                  "player_name": "Arnel Jakupović",
                  "ranking": 2111
                },
                {
                  "player_name": "Antonio Maurić",
                  "ranking": 2112
                },
                {
                  "player_name": "Mouad Dahak",
                  "ranking": 2113
                },
                {
                  "player_name": "José Rodríguez",
                  "ranking": 2114
                }
              ],
              "lower": [
                {
                  "player_name": "Igor Neves",
                  "ranking": 2116
                },
                {
                  "player_name": "Siphesihle Ndlovu",
                  "ranking": 2117
                },
                {
                  "player_name": "Ante Matej Jurić",
                  "ranking": 2118
                },
                {
                  "player_name": "Mohamed Reda",
                  "ranking": 2119
                },
                {
                  "player_name": "Baptiste Roux",
                  "ranking": 2120
                }
              ]
            }
          }
        },
        "Mohamed Abdelmonem": {
          "player_id": 926506,
          "position": "D",
          "position_depth": "D_BENCH",
          "is_starter": false,
          "shirt_number": 5,
          "height": 183,
          "market_value": 3300000,
          "stats": {
            "interceptions": 0,
            "tackles": 0,
            "tackles_won": 0,
            "clearances": 0,
            "aerial_won": 0,
            "duels_won": 1,
            "rating": 80.5817,
            "minutes": 14,
            "total_pass": 6,
            "accurate_pass": 5,
            "total_shots": 0,
            "bench_appearance_probability": 0.299,
            "bench_expected_minutes": 13.59,
            "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": 16891,
            "combined_rank_score": 1561.0,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 2885.0,
            "fifa_overall": 74.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 8,
            "squad_role": "substitute",
            "projected_match_rating": 6.5817,
            "source_file": "data/player_rankings.csv",
            "player_name": "Mohamed Abdelmonem",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Nahuel Barrios",
                  "ranking": 16886
                },
                {
                  "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
                }
              ],
              "lower": [
                {
                  "player_name": "David Zima",
                  "ranking": 16892
                },
                {
                  "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
                }
              ]
            }
          }
        },
        "Hossam Abdelmaguid": {
          "player_id": 1063327,
          "position": "D",
          "position_depth": "D_BENCH",
          "is_starter": false,
          "shirt_number": 4,
          "height": 193,
          "market_value": 2100000,
          "stats": {
            "interceptions": 0,
            "tackles": 0,
            "tackles_won": 0,
            "clearances": 0,
            "aerial_won": 0,
            "rating": 88.9376,
            "minutes": 14,
            "total_pass": 4,
            "accurate_pass": 2,
            "duels_won": 0,
            "total_long_balls": 2,
            "accurate_long_balls": 1,
            "total_own_half_passes": 1,
            "accurate_own_half_passes": 1,
            "total_opp_half_passes": 2,
            "accurate_opp_half_passes": 1,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 5,
            "possession_lost": 1.1838,
            "dispossessed": 0.0,
            "duels_lost": 0,
            "aerial_lost": 1,
            "total_contest": 0,
            "won_contest": 0,
            "ball_recovery": 0,
            "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.0015,
            "total_shots": 0,
            "shots_on_target": 0,
            "shots_off_target": 0,
            "big_chances_created": 0,
            "xgot": 0.0,
            "ball_carries": 1,
            "total_progression": 4,
            "progressive_carries": 0,
            "key_pass": 0,
            "bench_appearance_probability": 0.299,
            "bench_expected_minutes": 13.57,
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 82.0
          },
          "latest_10_games": [
            {
              "match_id": 16146140,
              "match_date": "2026-05-20",
              "home_team": "Zamalek SC",
              "away_team": "Cleopatra FC",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Zamalek SC",
              "opponent": "Cleopatra FC",
              "stats": {
                "minutes": 90,
                "rating": 7.1,
                "assists": 0,
                "expected_assists": 0.0067,
                "total_shots": 0,
                "total_pass": 24,
                "accurate_pass": 16,
                "tackles": 3,
                "tackles_won": 3,
                "interceptions": 1,
                "clearances": 2,
                "duels_won": 3,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Egyptian Premier League",
              "league_id": "808",
              "league_slug": "premier-league",
              "league_country": "Egypt",
              "season_id": "79317",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 1079,
            "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": 10,
            "squad_role": "substitute",
            "projected_match_rating": 6.9376,
            "source_file": "data/player_rankings.csv",
            "player_name": "Hossam Abdelmaguid",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Ismael Kandouss",
                  "ranking": 1074
                },
                {
                  "player_name": "Ante Oreč",
                  "ranking": 1075
                },
                {
                  "player_name": "Relebohile Mofokeng",
                  "ranking": 1076
                },
                {
                  "player_name": "Hassan Altambakti",
                  "ranking": 1077
                },
                {
                  "player_name": "Bogdan Kostić",
                  "ranking": 1078
                }
              ],
              "lower": [
                {
                  "player_name": "Mateusz Łęgowski",
                  "ranking": 1080
                },
                {
                  "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
                }
              ]
            }
          }
        },
        "Mahmoud Trézéguet": {
          "player_id": 295361,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 7,
          "height": 179,
          "market_value": 4099999,
          "stats": {
            "key_pass": 0,
            "expected_assists": 0.0101,
            "assists": 0,
            "expected_goals": 0.2525,
            "rating": 89.9296,
            "minutes": 22,
            "total_pass": 6,
            "accurate_pass": 5,
            "ball_recovery": 1,
            "duels_won": 1,
            "total_shots": 0,
            "total_long_balls": 0,
            "accurate_long_balls": 0,
            "total_own_half_passes": 1,
            "accurate_own_half_passes": 1,
            "total_opp_half_passes": 6,
            "accurate_opp_half_passes": 4,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 10,
            "possession_lost": 1.9292,
            "dispossessed": 0.9853,
            "duels_lost": 2,
            "aerial_won": 0,
            "aerial_lost": 3,
            "interceptions": 1,
            "tackles_won": 1,
            "tackles": 1,
            "clearances": 0,
            "total_contest": 0,
            "won_contest": 0,
            "challenges_lost": 0,
            "fouls": 1,
            "fouls_drawn": 0,
            "goal_rate": 0.4823,
            "goals": 0,
            "shots_on_target": 0,
            "shots_off_target": 0,
            "blocks": 0,
            "big_chances_created": 0,
            "big_chances_missed": 0,
            "xgot": 0.2219,
            "ball_carries": 2,
            "total_progression": 0,
            "progressive_carries": 0,
            "bench_appearance_probability": 0.501,
            "bench_expected_minutes": 22.03,
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 82.0
          },
          "latest_10_games": [
            {
              "match_id": 16138371,
              "match_date": "2026-05-20",
              "home_team": "Al-Masry",
              "away_team": "Al Ahly FC",
              "team_side": "away",
              "is_starting_11": 1,
              "team": "Al Ahly FC",
              "opponent": "Al-Masry",
              "stats": {
                "minutes": 90,
                "rating": 8.1,
                "goal_rate": 2.0,
                "goals": 2,
                "assists": 0,
                "expected_goals": 0.9444,
                "expected_assists": 0.0418,
                "total_shots": 4,
                "shots_on_target": 2,
                "shots_off_target": 1,
                "total_pass": 26,
                "accurate_pass": 20,
                "key_pass": 2,
                "tackles": 3,
                "tackles_won": 3,
                "interceptions": 3,
                "aerial_won": 1,
                "duels_won": 4,
                "ball_recovery": 3
              },
              "has_player_stats": true,
              "league_name": "Egyptian Premier League",
              "league_id": "808",
              "league_slug": "premier-league",
              "league_country": "Egypt",
              "season_id": "79317",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 633,
            "combined_rank_score": 327.0,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 424.0,
            "fifa_overall": 82.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 4,
            "squad_role": "substitute",
            "projected_match_rating": 7.9296,
            "source_file": "data/player_rankings.csv",
            "player_name": "Mahmoud Trézéguet",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Moatasem Al-Musrati",
                  "ranking": 628
                },
                {
                  "player_name": "Uchenna Ogundu",
                  "ranking": 629
                },
                {
                  "player_name": "Talles Magno",
                  "ranking": 630
                },
                {
                  "player_name": "Lucas Ronier",
                  "ranking": 631
                },
                {
                  "player_name": "Darko Nejašmić",
                  "ranking": 632
                }
              ],
              "lower": [
                {
                  "player_name": "Odin Luras Bjørtuft",
                  "ranking": 634
                },
                {
                  "player_name": "Benjamin Bourigeaud",
                  "ranking": 635
                },
                {
                  "player_name": "Bruno Fuchs",
                  "ranking": 636
                },
                {
                  "player_name": "Natanael",
                  "ranking": 637
                },
                {
                  "player_name": "Juninho",
                  "ranking": 638
                }
              ]
            }
          }
        },
        "Haissem Hassan": {
          "player_id": 942836,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 10,
          "height": 175,
          "market_value": 4099999,
          "stats": {
            "key_pass": 0,
            "expected_assists": 0.0049,
            "assists": 0,
            "expected_goals": 0.0,
            "rating": 78.4676,
            "minutes": 22,
            "total_pass": 6,
            "accurate_pass": 5,
            "ball_recovery": 0,
            "duels_won": 2,
            "total_shots": 0,
            "total_long_balls": 1,
            "accurate_long_balls": 1,
            "total_own_half_passes": 2,
            "accurate_own_half_passes": 2,
            "total_opp_half_passes": 4,
            "accurate_opp_half_passes": 3,
            "crosses_total": 1,
            "crosses_accurate": 0,
            "touches": 12,
            "possession_lost": 3.6171,
            "dispossessed": 0.0,
            "duels_lost": 2,
            "aerial_won": 0,
            "aerial_lost": 0,
            "interceptions": 0,
            "tackles_won": 0,
            "tackles": 0,
            "clearances": 0,
            "total_contest": 1,
            "won_contest": 0,
            "challenges_lost": 2,
            "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.0,
            "ball_carries": 7,
            "total_progression": 60,
            "progressive_carries": 3,
            "bench_appearance_probability": 0.501,
            "bench_expected_minutes": 22.03,
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 72.0
          },
          "latest_10_games": [
            {
              "match_id": 14083727,
              "match_date": "2026-05-23",
              "home_team": "Mallorca",
              "away_team": "Real Oviedo",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Real Oviedo",
              "opponent": "Mallorca",
              "stats": {
                "minutes": 45,
                "rating": 6.6,
                "assists": 0,
                "expected_goals": 0.0267,
                "expected_assists": 0.0033,
                "total_shots": 1,
                "shots_off_target": 1,
                "total_pass": 11,
                "accurate_pass": 11,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 3,
                "ball_recovery": 1
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083692,
              "match_date": "2026-05-17",
              "home_team": "Real Oviedo",
              "away_team": "Deportivo Alavés",
              "team_side": "home",
              "is_starting_11": 1,
              "team": "Real Oviedo",
              "opponent": "Deportivo Alavés",
              "stats": {
                "minutes": 79,
                "rating": 6.8,
                "assists": 0,
                "expected_assists": 0.0204,
                "total_shots": 0,
                "total_pass": 26,
                "accurate_pass": 22,
                "duels_won": 7,
                "ball_recovery": 2
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            },
            {
              "match_id": 14083649,
              "match_date": "2026-05-14",
              "home_team": "Real Madrid",
              "away_team": "Real Oviedo",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Real Oviedo",
              "opponent": "Real Madrid",
              "stats": {
                "minutes": 21,
                "rating": 7.0,
                "assists": 0,
                "expected_goals": 0.0309,
                "expected_assists": 0.0005,
                "total_shots": 2,
                "shots_on_target": 1,
                "shots_off_target": 1,
                "total_pass": 5,
                "accurate_pass": 3,
                "tackles": 1,
                "tackles_won": 1,
                "duels_won": 3
              },
              "has_player_stats": true,
              "league_name": "LaLiga",
              "league_id": "8",
              "league_slug": "laliga",
              "league_country": "Spain",
              "season_id": "77559",
              "season_name": "LaLiga 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 17831,
            "combined_rank_score": 2318.5,
            "ranking_source": "sofascore_plus_fifa_csv",
            "ranking_status": "combined",
            "sofascore_rank": 492.0,
            "sofascore_rating": 6.8297,
            "sofascore_appearances": 37.0,
            "fifa_rank": 4145.0,
            "fifa_overall": 72.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 5,
            "squad_role": "substitute",
            "projected_match_rating": 6.4676,
            "source_file": "data/player_rankings.csv",
            "player_name": "Haissem Hassan",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Kristoffer Zachariassen",
                  "ranking": 17826
                },
                {
                  "player_name": "Gerasimos Mitoglou",
                  "ranking": 17827
                },
                {
                  "player_name": "Alieu Fadera",
                  "ranking": 17828
                },
                {
                  "player_name": "Bongokuhle Hlongwane",
                  "ranking": 17829
                },
                {
                  "player_name": "Fabián Sambueza",
                  "ranking": 17830
                }
              ],
              "lower": [
                {
                  "player_name": "Omri Gandelman",
                  "ranking": 17832
                },
                {
                  "player_name": "Franco Jara",
                  "ranking": 17833
                },
                {
                  "player_name": "Javier Méndez",
                  "ranking": 17834
                },
                {
                  "player_name": "Ryotaro Ito",
                  "ranking": 17835
                },
                {
                  "player_name": "Idrissa Touré",
                  "ranking": 17836
                }
              ]
            }
          }
        },
        "Hamza Abdelkarim": {
          "player_id": 1961596,
          "position": "F",
          "position_depth": "F_BENCH",
          "is_starter": false,
          "shirt_number": 9,
          "height": 182,
          "market_value": 1500000,
          "stats": {
            "expected_goals": 0.0,
            "goal_rate": 0.0001,
            "goals": 0,
            "shots_on_target": 0,
            "expected_assists": 0.0005,
            "key_pass": 0,
            "rating": 91.5497,
            "minutes": 25,
            "total_shots": 0,
            "duels_won": 1,
            "aerial_won": 1,
            "total_pass": 1,
            "accurate_pass": 1,
            "total_long_balls": 1,
            "accurate_long_balls": 0,
            "total_opp_half_passes": 1,
            "accurate_opp_half_passes": 0,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 2,
            "possession_lost": 0.8273,
            "dispossessed": 0.0,
            "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": 0,
            "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": 0,
            "total_progression": 0,
            "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": 15186837,
              "match_date": "2026-06-15",
              "home_team": "Belgium",
              "away_team": "Egypt",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Egypt",
              "opponent": "Belgium",
              "stats": {
                "minutes": 14,
                "rating": 6.6,
                "assists": 0,
                "expected_assists": 0.0016,
                "total_shots": 0,
                "total_pass": 5,
                "accurate_pass": 2,
                "aerial_won": 2,
                "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"
            }
          ],
          "ranking": {
            "global_player_rank": 1659,
            "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": 13,
            "squad_role": "substitute",
            "projected_match_rating": 6.5497,
            "source_file": "data/player_rankings.csv",
            "player_name": "Hamza Abdelkarim",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Yusuke Matsuo",
                  "ranking": 1654
                },
                {
                  "player_name": "Pedro Zarza",
                  "ranking": 1655
                },
                {
                  "player_name": "Lucas Freitas",
                  "ranking": 1656
                },
                {
                  "player_name": "Thiago Andrade",
                  "ranking": 1657
                },
                {
                  "player_name": "Jakub Pira",
                  "ranking": 1658
                }
              ],
              "lower": [
                {
                  "player_name": "Jack Fletcher",
                  "ranking": 1660
                },
                {
                  "player_name": "Jaloliddin Masharipov",
                  "ranking": 1661
                },
                {
                  "player_name": "Alex Santana",
                  "ranking": 1662
                },
                {
                  "player_name": "Ahmed Fatouh",
                  "ranking": 1663
                },
                {
                  "player_name": "Erick Belé",
                  "ranking": 1664
                }
              ]
            }
          }
        },
        "Zizo": {
          "player_id": 547494,
          "position": "M",
          "position_depth": "M_BENCH",
          "is_starter": false,
          "shirt_number": 25,
          "height": 174,
          "market_value": 3700000,
          "stats": {
            "key_pass": 0,
            "expected_assists": 0.0024,
            "assists": 0,
            "expected_goals": 0.0047,
            "rating": 88.5038,
            "minutes": 22,
            "total_pass": 1,
            "accurate_pass": 1,
            "ball_recovery": 1,
            "duels_won": 1,
            "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": 0,
            "accurate_opp_half_passes": 0,
            "crosses_total": 0,
            "crosses_accurate": 0,
            "touches": 1,
            "possession_lost": 0.4811,
            "dispossessed": 0.0,
            "duels_lost": 0,
            "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.0,
            "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": 0,
            "total_progression": 1,
            "progressive_carries": 0,
            "bench_appearance_probability": 0.5,
            "bench_expected_minutes": 22.01,
            "projected_goals": 0,
            "goal_probability": 0.0,
            "projected_assists": 0,
            "assist_probability": 0.0,
            "fifa_overall": 84.0
          },
          "latest_10_games": [
            {
              "match_id": 15186837,
              "match_date": "2026-06-15",
              "home_team": "Belgium",
              "away_team": "Egypt",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Egypt",
              "opponent": "Belgium",
              "stats": {
                "minutes": 14,
                "rating": 6.4,
                "assists": 0,
                "expected_goals": 0.0196,
                "expected_assists": 0.0135,
                "total_shots": 1,
                "total_pass": 7,
                "accurate_pass": 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": 16138371,
              "match_date": "2026-05-20",
              "home_team": "Al-Masry",
              "away_team": "Al Ahly FC",
              "team_side": "away",
              "is_starting_11": 0,
              "team": "Al Ahly FC",
              "opponent": "Al-Masry",
              "stats": {
                "minutes": 1,
                "assists": 0,
                "expected_assists": 0.0013,
                "total_shots": 0,
                "total_pass": 2,
                "accurate_pass": 1
              },
              "has_player_stats": true,
              "league_name": "Egyptian Premier League",
              "league_id": "808",
              "league_slug": "premier-league",
              "league_country": "Egypt",
              "season_id": "79317",
              "season_name": "Premier League 25/26",
              "season_year": "25/26"
            }
          ],
          "ranking": {
            "global_player_rank": 690,
            "combined_rank_score": 218.0,
            "ranking_source": "sofascore_plus_fifa_csv_filled",
            "ranking_status": "combined",
            "sofascore_rank": null,
            "sofascore_rating": null,
            "sofascore_appearances": 0.0,
            "fifa_rank": 203.0,
            "fifa_overall": 84.0,
            "fifa_source": "EA SPORTS FC official ratings",
            "match_squad_rank": 7,
            "squad_role": "substitute",
            "projected_match_rating": 4.5038,
            "source_file": "data/player_rankings.csv",
            "player_name": "Zizo",
            "ranking_neighbors": {
              "upper": [
                {
                  "player_name": "Muhammed-Cham Saračević",
                  "ranking": 685
                },
                {
                  "player_name": "Felipe Chávez",
                  "ranking": 686
                },
                {
                  "player_name": "Henrik Wendel Meister",
                  "ranking": 687
                },
                {
                  "player_name": "Iker Fimbres",
                  "ranking": 688
                },
                {
                  "player_name": "Iago Borduchi",
                  "ranking": 689
                }
              ],
              "lower": [
                {
                  "player_name": "José Caicedo",
                  "ranking": 691
                },
                {
                  "player_name": "Adam Markhiev",
                  "ranking": 692
                },
                {
                  "player_name": "Giorgi Jgerenaia",
                  "ranking": 693
                },
                {
                  "player_name": "Manuel Neuer",
                  "ranking": 694
                },
                {
                  "player_name": "Luis Alberto",
                  "ranking": 695
                }
              ]
            }
          }
        }
      },
      "team_totals": {
        "projected_goals": 1,
        "expected_goals": 1.69,
        "expected_assists": 0.44,
        "total_shots": 13,
        "shots_on_target": 3,
        "total_passes": 393,
        "interceptions": 14,
        "tackles": 27,
        "avg_rating": 89.75,
        "possession_estimated_pct": 50.7,
        "pressing_actions_per_90": 6.5
      }
    }
  },
  "antagonist_report": {
    "home_attacking_duels": [
      {
        "attacker": "Sarpreet Singh",
        "attacker_role": "LW",
        "attacker_market_value": 485000,
        "attacker_height": 172,
        "attacker_skill_quality": 0.406,
        "defenders": [
          "Marwan Attia"
        ],
        "defender_roles": [
          "RB"
        ],
        "def_skill_quality_avg": 0.449,
        "duel_zone": "Left Wing vs Right Back — Flank Battle",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.461,
        "xg_contribution": 0.1498,
        "shots_in_zone": 1.9,
        "dribbles_attempted": 3,
        "dribbles_successful": 1.2,
        "aerial_duels": 2,
        "aerial_won": 0.8,
        "crosses_in_zone": 1.8,
        "fouls_drawn": 1.1,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Marwan Attia",
            "role": "RB",
            "market_value": 3900000,
            "tackles_attempted": 1.9,
            "tackles_won": 1.6,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.6,
            "aerial_duels_won": 1.1,
            "defensive_success_rate": 0.539
          }
        ],
        "duel_analysis": "Sarpreet Singh (LW) is evenly matched against Marwan Attia in a direct 1v1 contest. Duel win probability: 46%.  Projected xG contribution: 0.150 — with neither side clearly dominant."
      },
      {
        "attacker": "Elijah Just",
        "attacker_role": "RW",
        "attacker_market_value": 2700000,
        "attacker_height": 174,
        "attacker_skill_quality": 0.434,
        "defenders": [
          "Ahmed Fatouh"
        ],
        "defender_roles": [
          "LB"
        ],
        "def_skill_quality_avg": 0.412,
        "duel_zone": "Right Wing vs Left Back — Flank Battle",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.474,
        "xg_contribution": 0.3587,
        "shots_in_zone": 1.9,
        "dribbles_attempted": 3,
        "dribbles_successful": 1.3,
        "aerial_duels": 2,
        "aerial_won": 0.9,
        "crosses_in_zone": 1.9,
        "fouls_drawn": 1.1,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Ahmed Fatouh",
            "role": "LB",
            "market_value": 1000000,
            "tackles_attempted": 1.9,
            "tackles_won": 1.6,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.6,
            "aerial_duels_won": 1.1,
            "defensive_success_rate": 0.526
          }
        ],
        "duel_analysis": "Elijah Just (RW) is evenly matched against Ahmed Fatouh in a direct 1v1 contest. Duel win probability: 47%.  Projected xG contribution: 0.359 — with neither side clearly dominant."
      },
      {
        "attacker": "Liberato Cacace",
        "attacker_role": "CAM",
        "attacker_market_value": 2300000,
        "attacker_height": 184,
        "attacker_skill_quality": 0.429,
        "defenders": [
          "Mohanad Lasheen",
          "Hamdy Fathy"
        ],
        "defender_roles": [
          "CDM",
          "CDM"
        ],
        "def_skill_quality_avg": 0.432,
        "duel_zone": "Attacking Mid vs Double Pivot — Tight Space Battle",
        "numerical_situation": "1v2",
        "duel_win_rate": 0.257,
        "xg_contribution": 0.0231,
        "shots_in_zone": 1.7,
        "dribbles_attempted": 3,
        "dribbles_successful": 0.7,
        "aerial_duels": 2,
        "aerial_won": 1.1,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.3,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Mohanad Lasheen",
            "role": "CDM",
            "market_value": 3200000,
            "tackles_attempted": 1.0,
            "tackles_won": 1.0,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 0.4,
            "defensive_success_rate": 0.743
          },
          {
            "player": "Hamdy Fathy",
            "role": "CDM",
            "market_value": 1900000,
            "tackles_attempted": 1.0,
            "tackles_won": 1.0,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 0.4,
            "defensive_success_rate": 0.743
          }
        ],
        "duel_analysis": "Liberato Cacace (CAM) is heavily outmatched defensively against Mohanad Lasheen and Hamdy Fathy in a 2-defender block. Duel win probability: 26%.  Projected xG contribution: 0.023 — with very limited chance creation expected."
      },
      {
        "attacker": "Chris Wood",
        "attacker_role": "ST",
        "attacker_market_value": 5200000,
        "attacker_height": 191,
        "attacker_skill_quality": 0.465,
        "defenders": [
          "Yasser Ibrahim",
          "Mohamed Hany"
        ],
        "defender_roles": [
          "CB",
          "CB"
        ],
        "def_skill_quality_avg": 0.41,
        "duel_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "numerical_situation": "1v2",
        "duel_win_rate": 0.258,
        "xg_contribution": 0.1645,
        "shots_in_zone": 2.3,
        "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": "Yasser Ibrahim",
            "role": "CB",
            "market_value": 270000,
            "tackles_attempted": 0.9,
            "tackles_won": 1.0,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.6,
            "clearances_in_zone": 0.6,
            "aerial_duels_won": 0.5,
            "defensive_success_rate": 0.742
          },
          {
            "player": "Mohamed Hany",
            "role": "CB",
            "market_value": 1400000,
            "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.742
          }
        ],
        "duel_analysis": "Chris Wood (ST) is heavily outmatched defensively against Yasser Ibrahim and Mohamed Hany in a 2-defender block. Duel win probability: 26%.  Projected xG contribution: 0.165 — with very limited chance creation expected."
      },
      {
        "attacker": "Marko Stamenić",
        "attacker_role": "CDM",
        "attacker_market_value": 3100000,
        "attacker_height": 188,
        "attacker_skill_quality": 0.439,
        "defenders": [
          "Mohanad Lasheen"
        ],
        "defender_roles": [
          "CDM"
        ],
        "def_skill_quality_avg": 0.44,
        "duel_zone": "CDM vs CDM",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.455,
        "xg_contribution": 0.0416,
        "shots_in_zone": 1.0,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.8,
        "aerial_duels": 2,
        "aerial_won": 1.2,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.1,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Mohanad Lasheen",
            "role": "CDM",
            "market_value": 3200000,
            "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.8,
            "defensive_success_rate": 0.545
          }
        ],
        "duel_analysis": "Marko Stamenić (CDM) is evenly matched against Mohanad Lasheen in a direct 1v1 contest. Duel win probability: 46%.  Projected xG contribution: 0.042 — with neither side clearly dominant."
      }
    ],
    "away_attacking_duels": [
      {
        "attacker": "Mostafa Ziko",
        "attacker_role": "LW",
        "attacker_market_value": 2000000,
        "attacker_height": 180,
        "attacker_skill_quality": 0.425,
        "defenders": [
          "Callum McCowatt"
        ],
        "defender_roles": [
          "RB"
        ],
        "def_skill_quality_avg": 0.434,
        "duel_zone": "Left Wing vs Right Back — Flank Battle",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.484,
        "xg_contribution": 0.2039,
        "shots_in_zone": 1.9,
        "dribbles_attempted": 3,
        "dribbles_successful": 1.3,
        "aerial_duels": 2,
        "aerial_won": 1.1,
        "crosses_in_zone": 1.8,
        "fouls_drawn": 1.0,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Callum McCowatt",
            "role": "RB",
            "market_value": 2700000,
            "tackles_attempted": 1.9,
            "tackles_won": 1.6,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.6,
            "aerial_duels_won": 0.9,
            "defensive_success_rate": 0.516
          }
        ],
        "duel_analysis": "Mostafa Ziko (LW) is evenly matched against Callum McCowatt in a direct 1v1 contest. Duel win probability: 48%.  Projected xG contribution: 0.204 — with neither side clearly dominant."
      },
      {
        "attacker": "Emam Ashour",
        "attacker_role": "RW",
        "attacker_market_value": 4200000,
        "attacker_height": 182,
        "attacker_skill_quality": 0.452,
        "defenders": [
          "Tim Payne"
        ],
        "defender_roles": [
          "LB"
        ],
        "def_skill_quality_avg": 0.404,
        "duel_zone": "Right Wing vs Left Back — Flank Battle",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.514,
        "xg_contribution": 0.2838,
        "shots_in_zone": 2.0,
        "dribbles_attempted": 3,
        "dribbles_successful": 1.4,
        "aerial_duels": 2,
        "aerial_won": 1.1,
        "crosses_in_zone": 1.9,
        "fouls_drawn": 1.0,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Tim Payne",
            "role": "LB",
            "market_value": 340000,
            "tackles_attempted": 1.9,
            "tackles_won": 1.5,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.6,
            "clearances_in_zone": 0.6,
            "aerial_duels_won": 0.9,
            "defensive_success_rate": 0.486
          }
        ],
        "duel_analysis": "Emam Ashour (RW) is slightly favored against Tim Payne in a direct 1v1 contest. Duel win probability: 51%.  Projected xG contribution: 0.284 — creating consistent moderate threat."
      },
      {
        "attacker": "Mohamed Salah",
        "attacker_role": "CAM",
        "attacker_market_value": 21000000,
        "attacker_height": 175,
        "attacker_skill_quality": 0.641,
        "defenders": [
          "Marko Stamenić",
          "Joe Bell"
        ],
        "defender_roles": [
          "CDM",
          "CDM"
        ],
        "def_skill_quality_avg": 0.442,
        "duel_zone": "Attacking Mid vs Double Pivot — Tight Space Battle",
        "numerical_situation": "1v2",
        "duel_win_rate": 0.29,
        "xg_contribution": 0.1084,
        "shots_in_zone": 1.8,
        "dribbles_attempted": 3,
        "dribbles_successful": 0.8,
        "aerial_duels": 2,
        "aerial_won": 0.9,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.5,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Marko Stamenić",
            "role": "CDM",
            "market_value": 3100000,
            "tackles_attempted": 1.0,
            "tackles_won": 1.0,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 0.5,
            "defensive_success_rate": 0.71
          },
          {
            "player": "Joe Bell",
            "role": "CDM",
            "market_value": 3600000,
            "tackles_attempted": 1.0,
            "tackles_won": 1.0,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 0.5,
            "defensive_success_rate": 0.71
          }
        ],
        "duel_analysis": "Mohamed Salah (CAM) is heavily outmatched defensively against Marko Stamenić and Joe Bell in a 2-defender block. Duel win probability: 29%. The quality gap is significant (€21M vs €3M avg). Projected xG contribution: 0.108 — with very limited chance creation expected."
      },
      {
        "attacker": "Omar Marmoush",
        "attacker_role": "ST",
        "attacker_market_value": 55000000,
        "attacker_height": 183,
        "attacker_skill_quality": 0.84,
        "defenders": [
          "Michael Boxall",
          "Finn Surman"
        ],
        "defender_roles": [
          "CB",
          "CB"
        ],
        "def_skill_quality_avg": 0.413,
        "duel_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "numerical_situation": "1v2",
        "duel_win_rate": 0.368,
        "xg_contribution": 0.3643,
        "shots_in_zone": 2.8,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.6,
        "aerial_duels": 3,
        "aerial_won": 1.7,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.5,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Michael Boxall",
            "role": "CB",
            "market_value": 155000,
            "tackles_attempted": 0.9,
            "tackles_won": 0.9,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.6,
            "clearances_in_zone": 0.6,
            "aerial_duels_won": 0.7,
            "defensive_success_rate": 0.632
          },
          {
            "player": "Finn Surman",
            "role": "CB",
            "market_value": 1900000,
            "tackles_attempted": 1.0,
            "tackles_won": 0.9,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.6,
            "aerial_duels_won": 0.7,
            "defensive_success_rate": 0.632
          }
        ],
        "duel_analysis": "Omar Marmoush (ST) faces tough defensive resistance against Michael Boxall and Finn Surman in a 2-defender block. Duel win probability: 37%. The quality gap is significant (€55M vs €1M avg). Projected xG contribution: 0.364 — and is restricted in space and time on the ball."
      },
      {
        "attacker": "Mohanad Lasheen",
        "attacker_role": "CDM",
        "attacker_market_value": 3200000,
        "attacker_height": 179,
        "attacker_skill_quality": 0.44,
        "defenders": [
          "Marko Stamenić"
        ],
        "defender_roles": [
          "CDM"
        ],
        "def_skill_quality_avg": 0.439,
        "duel_zone": "CDM vs CDM",
        "numerical_situation": "1v1",
        "duel_win_rate": 0.385,
        "xg_contribution": 0.049,
        "shots_in_zone": 0.9,
        "dribbles_attempted": 2,
        "dribbles_successful": 0.7,
        "aerial_duels": 2,
        "aerial_won": 1.0,
        "crosses_in_zone": 0.0,
        "fouls_drawn": 1.2,
        "pressing_intensity_on_attacker": "LOW",
        "defender_stats": [
          {
            "player": "Marko Stamenić",
            "role": "CDM",
            "market_value": 3100000,
            "tackles_attempted": 1.9,
            "tackles_won": 1.8,
            "fouls_committed": 0.6,
            "interceptions_in_zone": 0.7,
            "clearances_in_zone": 0.5,
            "aerial_duels_won": 1.0,
            "defensive_success_rate": 0.615
          }
        ],
        "duel_analysis": "Mohanad Lasheen (CDM) faces tough defensive resistance against Marko Stamenić in a direct 1v1 contest. Duel win probability: 38%.  Projected xG contribution: 0.049 — and is restricted in space and time on the ball."
      }
    ],
    "midfield_battle": {
      "home_midfield_power": 0.506,
      "away_midfield_power": 0.547,
      "home_creative_power": 0.388,
      "away_creative_power": 0.492,
      "home_defensive_power": 0.397,
      "away_defensive_power": 0.442,
      "home_dominance_ratio": 0.481,
      "home_midfield_count": 6,
      "away_midfield_count": 6,
      "home_midfield_players": [
        "Sarpreet Singh",
        "Callum McCowatt",
        "Elijah Just",
        "Marko Stamenić",
        "Joe Bell",
        "Liberato Cacace"
      ],
      "away_midfield_players": [
        "Mostafa Ziko",
        "Emam Ashour",
        "Mohamed Salah",
        "Mohanad Lasheen",
        "Marwan Attia",
        "Hamdy Fathy"
      ],
      "possession_advantage": "neutral",
      "estimated_possession_home_pct": 49.3,
      "estimated_possession_away_pct": 50.7,
      "home_pressing_actions_per_90": 6.2,
      "away_pressing_actions_per_90": 6.5,
      "home_key_passes_projected": 3.8,
      "away_key_passes_projected": 4.5,
      "home_throughball_threat": 1.8,
      "away_throughball_threat": 2.1,
      "key_personal_duel": "Joe Bell vs Mohamed Salah",
      "midfield_lambda_factor_home": 0.991,
      "midfield_lambda_factor_away": 1.012
    },
    "formation_analysis": {
      "home_formation": "4-2-3-1",
      "away_formation": "4-2-3-1",
      "home_tactical_bonus": 0.0,
      "away_tactical_bonus": 0.0,
      "formation_verdict": "Tactical parity between 4-2-3-1 and 4-2-3-1. Match outcome driven primarily by individual player quality."
    },
    "home_lambda": 1.05,
    "away_lambda": 1.685,
    "home_top_threat_zones": [
      "Right Wing vs Left Back — Flank Battle",
      "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle"
    ],
    "away_top_threat_zones": [
      "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
      "Right Wing vs Left Back — Flank Battle"
    ],
    "home_player_antagonists": {
      "Sarpreet Singh": {
        "opponents": [
          "Marwan Attia",
          "Mostafa Ziko"
        ],
        "primary_zone": "Left Wing vs Right Back — Flank Battle",
        "source": "attacking_duel, midfield_pairing"
      },
      "Elijah Just": {
        "opponents": [
          "Ahmed Fatouh",
          "Emam Ashour"
        ],
        "primary_zone": "Right Wing vs Left Back — Flank Battle",
        "source": "attacking_duel, midfield_pairing"
      },
      "Liberato Cacace": {
        "opponents": [
          "Mohanad Lasheen",
          "Hamdy Fathy",
          "Mohamed Salah"
        ],
        "primary_zone": "Attacking Mid vs Double Pivot — Tight Space Battle",
        "source": "attacking_duel, midfield_pairing"
      },
      "Chris Wood": {
        "opponents": [
          "Yasser Ibrahim",
          "Mohamed Hany"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "attacking_duel"
      },
      "Marko Stamenić": {
        "opponents": [
          "Mohanad Lasheen",
          "Mohamed Salah"
        ],
        "primary_zone": "CDM vs CDM",
        "source": "attacking_duel, defensive_duel, midfield_pairing"
      },
      "Callum McCowatt": {
        "opponents": [
          "Mostafa Ziko",
          "Marwan Attia"
        ],
        "primary_zone": "Left Wing vs Right Back — Flank Battle",
        "source": "defensive_duel, midfield_pairing"
      },
      "Tim Payne": {
        "opponents": [
          "Emam Ashour"
        ],
        "primary_zone": "Right Wing vs Left Back — Flank Battle",
        "source": "defensive_duel"
      },
      "Joe Bell": {
        "opponents": [
          "Mohamed Salah",
          "Hamdy Fathy"
        ],
        "primary_zone": "Attacking Mid vs Double Pivot — Tight Space Battle",
        "source": "defensive_duel, midfield_pairing"
      },
      "Michael Boxall": {
        "opponents": [
          "Omar Marmoush"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "defensive_duel"
      },
      "Finn Surman": {
        "opponents": [
          "Omar Marmoush"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "defensive_duel"
      },
      "Max Crocombe": {
        "opponents": [
          "Omar Marmoush",
          "Emam Ashour"
        ],
        "primary_zone": "Shape fallback",
        "source": "formation_fallback"
      }
    },
    "away_player_antagonists": {
      "Marwan Attia": {
        "opponents": [
          "Sarpreet Singh",
          "Callum McCowatt"
        ],
        "primary_zone": "Left Wing vs Right Back — Flank Battle",
        "source": "defensive_duel, midfield_pairing"
      },
      "Ahmed Fatouh": {
        "opponents": [
          "Elijah Just"
        ],
        "primary_zone": "Right Wing vs Left Back — Flank Battle",
        "source": "defensive_duel"
      },
      "Mohanad Lasheen": {
        "opponents": [
          "Liberato Cacace",
          "Marko Stamenić"
        ],
        "primary_zone": "Attacking Mid vs Double Pivot — Tight Space Battle",
        "source": "defensive_duel, attacking_duel, midfield_pairing"
      },
      "Hamdy Fathy": {
        "opponents": [
          "Liberato Cacace",
          "Joe Bell"
        ],
        "primary_zone": "Attacking Mid vs Double Pivot — Tight Space Battle",
        "source": "defensive_duel, midfield_pairing"
      },
      "Yasser Ibrahim": {
        "opponents": [
          "Chris Wood"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "defensive_duel"
      },
      "Mohamed Hany": {
        "opponents": [
          "Chris Wood"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "defensive_duel"
      },
      "Mostafa Ziko": {
        "opponents": [
          "Callum McCowatt",
          "Sarpreet Singh"
        ],
        "primary_zone": "Left Wing vs Right Back — Flank Battle",
        "source": "attacking_duel, midfield_pairing"
      },
      "Emam Ashour": {
        "opponents": [
          "Tim Payne",
          "Elijah Just"
        ],
        "primary_zone": "Right Wing vs Left Back — Flank Battle",
        "source": "attacking_duel, midfield_pairing"
      },
      "Mohamed Salah": {
        "opponents": [
          "Marko Stamenić",
          "Joe Bell",
          "Liberato Cacace"
        ],
        "primary_zone": "Attacking Mid vs Double Pivot — Tight Space Battle",
        "source": "attacking_duel, midfield_pairing"
      },
      "Omar Marmoush": {
        "opponents": [
          "Michael Boxall",
          "Finn Surman"
        ],
        "primary_zone": "Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle",
        "source": "attacking_duel"
      },
      "Mostafa Shobeir": {
        "opponents": [
          "Chris Wood",
          "Joe Bell"
        ],
        "primary_zone": "Shape fallback",
        "source": "formation_fallback"
      }
    },
    "key_tactical_insight": "Midfield is evenly contested — Joe Bell vs Mohamed Salah will be the pivotal duel. Total antagonist xG — Home: 0.74, Away: 1.01. Home danger zone: Right Wing vs Left Back — Flank Battle. Away danger zone: Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle.",
    "lambda_factors": {
      "home_gk_opposition_factor": 1.0193,
      "away_gk_opposition_factor": 1.0209,
      "home_set_piece_bonus": 0.123,
      "away_set_piece_bonus": 0.015,
      "home_defensive_solidity_vs": 1.0252,
      "away_defensive_solidity_vs": 1.0256,
      "home_midfield_factor": 0.991,
      "away_midfield_factor": 1.012,
      "stage_discount": 1.0,
      "quality_gap_applied": true,
      "home_avg_quality": 0.428,
      "away_avg_quality": 0.4904,
      "avg_quality_gap": -0.0623,
      "squad_value_gap_log": -1.1625,
      "top5_value_gap_log": -1.2709,
      "attack_value_gap_log": -1.2131,
      "elite_count_gap": -1,
      "combined_quality_gap": -0.1576,
      "stronger_lambda_boost": 0.3468,
      "weaker_lambda_suppression": 0.2207,
      "home_bench_lambda_bonus": 0.0025,
      "away_bench_lambda_bonus": 0.0925,
      "home_bench_players_modelled": 7,
      "away_bench_players_modelled": 7,
      "mismatch_score_pressure_applied": false,
      "competitive_underdog_floor_applied": true,
      "competitive_underdog_floor": 1.05,
      "pre_competitive_floor_home_lambda": 0.823,
      "pre_competitive_floor_away_lambda": 1.685,
      "pre_calibration_home_lambda": 0.8235,
      "pre_calibration_away_lambda": 1.6855,
      "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.05,
      "final_away_lambda": 1.685
    }
  },
  "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-21T13:31:50Z"
}