{
  "name": "Chess improvement services, scored on public criteria",
  "version": "2026-09",
  "published_at": "2026-09-03",
  "license": "CC BY 4.0",
  "license_url": "https://creativecommons.org/licenses/by/4.0/",
  "source_url": "https://www.chesspivot.com/en/best-chess-improvement-apps",
  "method_url": "https://www.chesspivot.com/en/best-chess-improvement-apps/method",
  "corrections_url": "https://www.chesspivot.com/en/best-chess-improvement-apps/corrections",
  "disclosure": "ChessPivot publishes this comparison and is scored in it, by the same grid and from public pages only. Recompute the ranking from these files with your own weights.",
  "counts": {
    "services": 147,
    "services_scored_overall": 128,
    "categories": 11,
    "criteria": 56,
    "scores": 8232,
    "free_access_surveys": 83,
    "reviews": 64
  },
  "method": {
    "scale": "Each criterion is scored 0-3 against four levels written before scoring.",
    "category_score": "Mean of the criteria in the category, rescaled to 0-10.",
    "overall_score": "Weighted mean of the eleven category scores; weights sum to 100.",
    "weight_total": 100,
    "overall_score_scope": "Only services of kind \"platform\" receive an overall score: an engine, a coach directory or an institution does not answer every category, and is compared category by category.",
    "free_score": {
      "unlimited": "full score kept",
      "quota-real": "one level down (floor 0)",
      "quota-symbolic": "capped at 1",
      "paid": "0",
      "undocumented": "0 (not documented publicly, so not credited)",
      "na": "not applicable (criterion already scored 0)"
    }
  },
  "categories": [
    {
      "code": "A",
      "weight": 20,
      "name": {
        "en": "Personalized diagnosis",
        "fr": "Diagnostic personnalisé"
      },
      "why": {
        "en": "A service can only target training if it knows what the player keeps missing, and shows it to them. This is where individual progress starts, and it is the area covered least often.",
        "fr": "Un service ne peut cibler l’entraînement que s’il sait ce que le joueur rate, et le lui montre. C’est le point de départ de toute progression individualisée, et le plus rarement couvert."
      },
      "criteria": [
        {
          "code": "A1",
          "label": {
            "en": "Importing your games (Chess.com, Lichess, PGN files)",
            "fr": "Import des parties (Chess.com, Lichess, fichiers PGN)"
          },
          "evidence_expected": {
            "en": "Import page, FAQ, screenshot of the connection screen.",
            "fr": "Page d’import, FAQ, capture de l’écran de connexion."
          },
          "levels": [
            {
              "en": "No import: the service cannot reach any game played elsewhere.",
              "fr": "Aucun import : le service n’accède à aucune partie jouée ailleurs."
            },
            {
              "en": "Paste a PGN/FEN, one game at a time.",
              "fr": "Coller un PGN/FEN, une partie à la fois."
            },
            {
              "en": "Connects to ONE platform (Chess.com or Lichess) OR imports PGN files in bulk.",
              "fr": "Connexion à UNE plateforme (Chess.com ou Lichess) OU import de fichiers PGN en lot."
            },
            {
              "en": "Connects to Chess.com AND Lichess, plus PGN file import.",
              "fr": "Connexion à Chess.com ET Lichess, plus import de fichiers PGN."
            }
          ]
        },
        {
          "code": "A2",
          "label": {
            "en": "Automatic engine analysis of every game",
            "fr": "Analyse moteur automatique de chaque partie"
          },
          "evidence_expected": {
            "en": "Product page, technical FAQ, changelog.",
            "fr": "Page produit, FAQ technique, changelog."
          },
          "levels": [
            {
              "en": "No engine evaluation.",
              "fr": "Aucune évaluation moteur."
            },
            {
              "en": "Evaluation of one position on demand, with no pass over the whole game.",
              "fr": "Évaluation d’une position à la demande, sans passe sur la partie entière."
            },
            {
              "en": "Automatic analysis of every imported game; engine and depth undocumented OR capped by a quota.",
              "fr": "Analyse automatique de chaque partie importée, moteur et profondeur non documentés OU limités par quota."
            },
            {
              "en": "Automatic analysis of every game, engine AND depth published, with no blocking quota on the paid plan.",
              "fr": "Analyse automatique de chaque partie, moteur ET profondeur publiés, sans quota bloquant sur l’offre payante."
            }
          ]
        },
        {
          "code": "A3",
          "label": {
            "en": "Recurring mistakes identified across all your games",
            "fr": "Erreurs récurrentes repérées sur l’ensemble des parties"
          },
          "evidence_expected": {
            "en": "Screenshot of the report, public list of the patterns detected.",
            "fr": "Capture du rapport, liste publique des motifs détectés."
          },
          "levels": [
            {
              "en": "Nothing aggregated: each game is analyzed on its own.",
              "fr": "Rien d’agrégé : chaque partie est analysée isolément."
            },
            {
              "en": "Aggregated statistics (average accuracy, results by opening) with no mistake named.",
              "fr": "Statistiques agrégées (précision moyenne, résultats par ouverture) sans erreur nommée."
            },
            {
              "en": "Mistakes named and counted across all games (e.g. \"undefended piece hanging: 14 times\").",
              "fr": "Erreurs nommées et comptées sur l’ensemble des parties (ex. « pièce en prise non défendue : 14 fois »)."
            },
            {
              "en": "Mistakes named, counted AND ranked by frequency and by cost (severity measured with the engine).",
              "fr": "Erreurs nommées, comptées ET classées par fréquence et par coût (gravité mesurée au moteur)."
            }
          ]
        },
        {
          "code": "A4",
          "label": {
            "en": "Types of mistakes covered (tactics, strategy, endgame, time…)",
            "fr": "Types d’erreurs couverts (tactique, stratégie, finale, temps…)"
          },
          "evidence_expected": {
            "en": "Public list of areas / patterns.",
            "fr": "Liste publique des axes / motifs."
          },
          "levels": [
            {
              "en": "No typology published.",
              "fr": "Aucune typologie publiée."
            },
            {
              "en": "A single area (e.g. tactics only).",
              "fr": "Un seul axe (ex. tactique seule)."
            },
            {
              "en": "2 to 3 areas among: tactics, strategy/structure, opening, endgame, king safety, time management.",
              "fr": "2 à 3 axes parmi : tactique, stratégie/structure, ouverture, finale, sécurité du roi, gestion du temps."
            },
            {
              "en": "≥ 4 of those areas, including endgame or time, with the list of patterns published.",
              "fr": "≥ 4 de ces axes, dont la finale ou le temps, avec la liste des motifs publiée."
            }
          ]
        },
        {
          "code": "A5",
          "label": {
            "en": "Written explanation of each mistake",
            "fr": "Explication écrite de chaque erreur"
          },
          "evidence_expected": {
            "en": "Public sample comment, method page.",
            "fr": "Exemple public de commentaire, page méthode."
          },
          "levels": [
            {
              "en": "Numeric evaluation only.",
              "fr": "Évaluation chiffrée seulement."
            },
            {
              "en": "A generic label (\"blunder\", \"inaccuracy\") with no explanation.",
              "fr": "Étiquette générique (« gaffe », « imprécision ») sans explication."
            },
            {
              "en": "Explanatory text for each mistake, in general terms (\"the center is weakened\").",
              "fr": "Texte explicatif par erreur, en termes généraux (« le centre est affaibli »)."
            },
            {
              "en": "Explanatory text for each mistake that cites the concrete moves (line, threat, square) it claims.",
              "fr": "Texte explicatif par erreur qui cite les coups concrets (variante, menace, case) qu’il affirme."
            }
          ]
        },
        {
          "code": "A6",
          "label": {
            "en": "Stated verification of the diagnoses (procedure, rates)",
            "fr": "Vérification annoncée des diagnostics (procédure, taux)"
          },
          "evidence_expected": {
            "en": "Method page, engineering blog, public repository.",
            "fr": "Page méthode, blog technique, dépôt public."
          },
          "levels": [
            {
              "en": "No information about reliability.",
              "fr": "Aucune information sur la fiabilité."
            },
            {
              "en": "Users can report a problem (\"this diagnosis is wrong\"), with no figure published.",
              "fr": "Signalement possible par l’utilisateur (« ce diagnostic est faux »), sans chiffre publié."
            },
            {
              "en": "Verification procedure described publicly (set of controlled cases, human review).",
              "fr": "Procédure de vérification décrite publiquement (jeu de cas contrôlés, relecture humaine)."
            },
            {
              "en": "Procedure described AND rates published (false positives, recall) OR reference cases open to inspection.",
              "fr": "Procédure décrite ET taux publié (faux positifs, rappel) OU cas de référence consultables."
            }
          ]
        },
        {
          "code": "A7",
          "label": {
            "en": "Tracking each weakness over time",
            "fr": "Suivi de chaque faiblesse dans le temps"
          },
          "evidence_expected": {
            "en": "Dashboard screenshot.",
            "fr": "Capture du tableau de bord."
          },
          "levels": [
            {
              "en": "No history.",
              "fr": "Aucun historique."
            },
            {
              "en": "Rating (ELO) curve only.",
              "fr": "Courbe de classement (ELO) seulement."
            },
            {
              "en": "Play indicators (accuracy, patterns) tracked period by period.",
              "fr": "Évolution des indicateurs de jeu (précision, motifs) par période."
            },
            {
              "en": "Each named weakness tracked period by period (1/3/6/12 months), with the direction of the trend.",
              "fr": "Évolution de chaque faiblesse nommée par période (1/3/6/12 mois) avec sens de la tendance."
            }
          ]
        },
        {
          "code": "A8",
          "label": {
            "en": "Comparison with players of the same rating",
            "fr": "Comparaison aux joueurs de même classement"
          },
          "evidence_expected": {
            "en": "Screenshot, documentation.",
            "fr": "Capture, documentation."
          },
          "levels": [
            {
              "en": "No comparison.",
              "fr": "Aucune comparaison."
            },
            {
              "en": "Your position in a global leaderboard.",
              "fr": "Position dans un classement global."
            },
            {
              "en": "One overall indicator compared with your rating band (percentile).",
              "fr": "Comparaison d’un indicateur global à la tranche de classement (percentile)."
            },
            {
              "en": "Each area / weakness compared with your rating band.",
              "fr": "Comparaison de chaque axe / faiblesse à la tranche de classement."
            }
          ]
        }
      ]
    },
    {
      "code": "B",
      "weight": 18,
      "name": {
        "en": "Openings",
        "fr": "Ouvertures"
      },
      "why": {
        "en": "96 of the 147 services sell an openings offer — against 17 with a real endgame module: it is what the market sells most. We measure personalisation, grounding in real games and the reliability of the lines.",
        "fr": "96 services sur 147 proposent une offre d’ouvertures — contre 17 un vrai module de finales : c’est ce que le marché vend le plus. On mesure la personnalisation, l’ancrage dans les parties réelles et la fiabilité des lignes."
      },
      "criteria": [
        {
          "code": "B1",
          "label": {
            "en": "Building a personal repertoire",
            "fr": "Construction d’un répertoire personnel"
          },
          "evidence_expected": {
            "en": "Product page.",
            "fr": "Page produit."
          },
          "levels": [
            {
              "en": "None.",
              "fr": "Aucun."
            },
            {
              "en": "Fixed repertoires (courses) that cannot be edited.",
              "fr": "Répertoires imposés (cours) sans modification."
            },
            {
              "en": "Free-form building (PGN import, tree editor).",
              "fr": "Construction libre (import PGN, éditeur d’arbre)."
            },
            {
              "en": "Free-form building plus suggestions based on the player’s own games or level.",
              "fr": "Construction libre + suggestions fondées sur les parties du joueur ou son niveau."
            }
          ]
        },
        {
          "code": "B2",
          "label": {
            "en": "Training the repertoire (drills, games)",
            "fr": "Entraînement du répertoire (drill, parties)"
          },
          "evidence_expected": {
            "en": "Product page.",
            "fr": "Page produit."
          },
          "levels": [
            {
              "en": "None.",
              "fr": "Aucun."
            },
            {
              "en": "Passive replay of the lines.",
              "fr": "Relecture passive des lignes."
            },
            {
              "en": "Interactive drill (play the right move).",
              "fr": "Drill interactif (jouer le bon coup)."
            },
            {
              "en": "Drill + spaced repetition + full games against an opponent that plays the repertoire.",
              "fr": "Drill + répétition espacée + parties complètes contre un adversaire jouant le répertoire."
            }
          ]
        },
        {
          "code": "B3",
          "label": {
            "en": "Spotting where you left your repertoire in your games",
            "fr": "Repérage des sorties de répertoire dans vos parties"
          },
          "evidence_expected": {
            "en": "Product page, screenshot.",
            "fr": "Page produit, capture."
          },
          "levels": [
            {
              "en": "None.",
              "fr": "Aucune."
            },
            {
              "en": "Result statistics by opening.",
              "fr": "Statistiques de résultat par ouverture."
            },
            {
              "en": "The service shows where the player left the repertoire in their games.",
              "fr": "Le service indique où le joueur a quitté son répertoire dans ses parties."
            },
            {
              "en": "Deviations detected AND turned into exercises/reviews.",
              "fr": "Déviations détectées ET transformées en exercices/révisions."
            }
          ]
        },
        {
          "code": "B4",
          "label": {
            "en": "Verification of the lines taught (engine, practice)",
            "fr": "Vérification des lignes enseignées (moteur, pratique)"
          },
          "evidence_expected": {
            "en": "Method page, about page.",
            "fr": "Page méthode, à-propos."
          },
          "levels": [
            {
              "en": "Not documented.",
              "fr": "Non documentée."
            },
            {
              "en": "Lines from a titled author, with no engine check announced.",
              "fr": "Lignes d’un auteur titré sans contrôle moteur annoncé."
            },
            {
              "en": "Lines checked with an engine OR sourced from a game database.",
              "fr": "Lignes vérifiées au moteur OU sourcées dans une base de parties."
            },
            {
              "en": "Lines checked with an engine AND sourced, with a published threshold or protocol.",
              "fr": "Lignes vérifiées au moteur ET sourcées, avec seuil ou protocole publié."
            }
          ]
        },
        {
          "code": "B5",
          "label": {
            "en": "Opening explorer and statistics",
            "fr": "Explorateur d’ouvertures et statistiques"
          },
          "evidence_expected": {
            "en": "Product page.",
            "fr": "Page produit."
          },
          "levels": [
            {
              "en": "None.",
              "fr": "Aucun."
            },
            {
              "en": "Statistics on your own games only.",
              "fr": "Statistiques sur les propres parties seulement."
            },
            {
              "en": "Explorer over an external database (masters or online).",
              "fr": "Explorateur d’une base externe (maîtres ou en ligne)."
            },
            {
              "en": "Multi-database explorer (masters + online + your own games) with evaluations.",
              "fr": "Explorateur multi-bases (maîtres + en ligne + joueur) avec évaluations."
            }
          ]
        },
        {
          "code": "B6",
          "label": {
            "en": "Explanation of opening plans and ideas",
            "fr": "Explication des plans et idées d’ouverture"
          },
          "evidence_expected": {
            "en": "Public example.",
            "fr": "Exemple public."
          },
          "levels": [
            {
              "en": "None.",
              "fr": "Aucune."
            },
            {
              "en": "Names and moves only.",
              "fr": "Noms et coups seulement."
            },
            {
              "en": "Plans and ideas explained in writing.",
              "fr": "Plans et idées expliqués par écrit."
            },
            {
              "en": "Plans explained + traps + model games, in text AND visual form (video or diagrams).",
              "fr": "Plans expliqués + pièges + parties modèles, texte ET support visuel (vidéo ou diagrammes)."
            }
          ]
        }
      ]
    },
    {
      "code": "C",
      "weight": 16,
      "name": {
        "en": "Targeted training",
        "fr": "Entraînement ciblé"
      },
      "why": {
        "en": "What the player does every day. We measure how far it is personalized, how well it covers the phases of the game, and the mechanisms that make learning last.",
        "fr": "Ce que le joueur fait chaque jour. On mesure la personnalisation, la couverture des phases de jeu et les mécanismes qui font durer l’apprentissage."
      },
      "criteria": [
        {
          "code": "C1",
          "label": {
            "en": "Exercises drawn from your own games",
            "fr": "Exercices tirés de vos propres parties"
          },
          "evidence_expected": {
            "en": "Product page, screenshot.",
            "fr": "Page produit, capture."
          },
          "levels": [
            {
              "en": "None.",
              "fr": "Aucun."
            },
            {
              "en": "Replay the move you missed in a game (one position, no bank).",
              "fr": "Rejouer le coup raté d’une partie (une position, sans banque)."
            },
            {
              "en": "Exercises built from your own mistakes, presented as a series or a personal bank.",
              "fr": "Exercices construits à partir des propres erreurs, présentés en série ou banque personnelle."
            },
            {
              "en": "Exercises from your own mistakes, sorted by the weakness detected, with a success rate per weakness.",
              "fr": "Exercices depuis les propres erreurs, classés par faiblesse détectée, avec taux de réussite par faiblesse."
            }
          ]
        },
        {
          "code": "C2",
          "label": {
            "en": "Bank of tactical exercises (size, themes, rating)",
            "fr": "Banque d’exercices tactiques (taille, thèmes, cote)"
          },
          "evidence_expected": {
            "en": "Figure published by the vendor (page, store).",
            "fr": "Chiffre publié par l’éditeur (page, store)."
          },
          "levels": [
            {
              "en": "None.",
              "fr": "Aucune."
            },
            {
              "en": "< 5,000 exercises OR no sorting by theme.",
              "fr": "< 5 000 exercices OU sans classement par thème."
            },
            {
              "en": "≥ 5,000 exercises sorted by theme, with a difficulty rating.",
              "fr": "≥ 5 000 exercices classés par thème, cote de difficulté."
            },
            {
              "en": "≥ 100,000 exercises, themes, adaptive rating, public quality control (votes, reports).",
              "fr": "≥ 100 000 exercices, thèmes, cote adaptative, contrôle qualité public (votes, signalements)."
            }
          ]
        },
        {
          "code": "C3",
          "label": {
            "en": "Endgame training",
            "fr": "Entraînement des finales"
          },
          "evidence_expected": {
            "en": "Product page.",
            "fr": "Page produit."
          },
          "levels": [
            {
              "en": "Nothing.",
              "fr": "Rien."
            },
            {
              "en": "A few endgame lessons or puzzles, with no dedicated module.",
              "fr": "Quelques leçons ou puzzles de finale sans module dédié."
            },
            {
              "en": "Dedicated module: theoretical positions played against the engine OR an interactive course.",
              "fr": "Module dédié : positions théoriques jouées contre le moteur OU cours interactif."
            },
            {
              "en": "Dedicated module + practical endgames taken from real games (including the player’s own) + endgame tablebases.",
              "fr": "Module dédié + finales pratiques issues de vraies parties (dont celles du joueur) + tables de finales."
            }
          ]
        },
        {
          "code": "C4",
          "label": {
            "en": "Strategic and positional training",
            "fr": "Entraînement stratégique et positionnel"
          },
          "evidence_expected": {
            "en": "Product page.",
            "fr": "Page produit."
          },
          "levels": [
            {
              "en": "Nothing.",
              "fr": "Rien."
            },
            {
              "en": "Passive content (video/text) with no exercises.",
              "fr": "Contenu passif (vidéos/texte) sans exercice."
            },
            {
              "en": "Positional exercises (plans, structures, \"guess the move\" on master games).",
              "fr": "Exercices positionnels (plans, structures, « devine le coup » sur parties de maîtres)."
            },
            {
              "en": "Positional exercises sorted by strategic theme (≥ 3 themes: structures, plans, pieces) with the plan explained.",
              "fr": "Exercices positionnels classés par thème stratégique (≥ 3 thèmes : structures, plans, pièces) avec explication du plan."
            }
          ]
        },
        {
          "code": "C5",
          "label": {
            "en": "Training defense and alertness",
            "fr": "Entraînement de la défense et de la vigilance"
          },
          "evidence_expected": {
            "en": "Product page.",
            "fr": "Page produit."
          },
          "levels": [
            {
              "en": "Nothing.",
              "fr": "Rien."
            },
            {
              "en": "Live blunder alert during a game.",
              "fr": "Alerte de gaffe en direct pendant une partie."
            },
            {
              "en": "Exercises dedicated to one sub-type (hanging pieces OR opponent threats OR the saving move).",
              "fr": "Exercices dédiés à un sous-type (pièces en prise OU menaces adverses OU coup sauveur)."
            },
            {
              "en": "Exercises dedicated to ≥ 3 defensive sub-types, each with its own difficulty rating.",
              "fr": "Exercices dédiés à ≥ 3 sous-types défensifs, chacun avec sa cote de difficulté."
            }
          ]
        },
        {
          "code": "C6",
          "label": {
            "en": "Training calculation and visualization",
            "fr": "Entraînement du calcul et de la visualisation"
          },
          "evidence_expected": {
            "en": "Product page.",
            "fr": "Page produit."
          },
          "levels": [
            {
              "en": "Nothing.",
              "fr": "Rien."
            },
            {
              "en": "One coordinates/board-vision exercise.",
              "fr": "Un exercice de coordonnées/vision."
            },
            {
              "en": "Blindfold mode OR exercises on calculating sequences.",
              "fr": "Mode à l’aveugle OU exercices de calcul de séquences."
            },
            {
              "en": "A progressive calculation/visualization program with several levels.",
              "fr": "Programme progressif de calcul/visualisation à plusieurs niveaux."
            }
          ]
        },
        {
          "code": "C7",
          "label": {
            "en": "Difficulty matched to your real level",
            "fr": "Difficulté adaptée au niveau réel"
          },
          "evidence_expected": {
            "en": "Documentation, FAQ.",
            "fr": "Documentation, FAQ."
          },
          "levels": [
            {
              "en": "Fixed level, or chosen by hand.",
              "fr": "Niveau fixe ou choisi à la main."
            },
            {
              "en": "Levels by rating band.",
              "fr": "Niveaux par tranche de classement."
            },
            {
              "en": "Adaptive rating (Glicko/ELO) on the exercises.",
              "fr": "Cote adaptative (Glicko/Elo) sur les exercices."
            },
            {
              "en": "Adaptive rating with a documented target success rate per exercise family.",
              "fr": "Cote adaptative avec cible de réussite documentée par famille d’exercices."
            }
          ]
        },
        {
          "code": "C8",
          "label": {
            "en": "Spaced repetition (named algorithm)",
            "fr": "Répétition espacée (algorithme nommé)"
          },
          "evidence_expected": {
            "en": "Documentation (name of the algorithm).",
            "fr": "Documentation (nom de l’algorithme)."
          },
          "levels": [
            {
              "en": "None.",
              "fr": "Aucune."
            },
            {
              "en": "Replaying the exercises you failed by hand.",
              "fr": "Rejouer manuellement les exercices ratés."
            },
            {
              "en": "Spaced repetition, algorithm not named.",
              "fr": "Répétition espacée, algorithme non nommé."
            },
            {
              "en": "Spaced repetition with a named algorithm (SM-2, FSRS…) and visible review due dates.",
              "fr": "Répétition espacée avec algorithme nommé (SM-2, FSRS…) et échéances de révision visibles."
            }
          ]
        },
        {
          "code": "C9",
          "label": {
            "en": "Personalized training plan",
            "fr": "Plan d’entraînement personnalisé"
          },
          "evidence_expected": {
            "en": "Screenshot, product page.",
            "fr": "Capture, page produit."
          },
          "levels": [
            {
              "en": "None.",
              "fr": "Aucun."
            },
            {
              "en": "Generic advice by level.",
              "fr": "Conseils génériques par niveau."
            },
            {
              "en": "A daily work queue (what to do today), the same for everyone.",
              "fr": "File de travail quotidienne (quoi faire aujourd’hui), identique pour tous."
            },
            {
              "en": "A plan personalized for each player, with an adjustable time budget and explicit priorities.",
              "fr": "Plan personnalisé par joueur, avec budget de temps réglable et priorités explicites."
            }
          ]
        }
      ]
    },
    {
      "code": "D",
      "weight": 14,
      "name": {
        "en": "Price and value",
        "fr": "Prix et valeur"
      },
      "why": {
        "en": "What a complete path really costs, and how it is sold.",
        "fr": "Ce que ça coûte réellement pour un parcours complet, et comment c’est vendu."
      },
      "criteria": [
        {
          "code": "D1",
          "label": {
            "en": "What the free plan actually lets you do",
            "fr": "Ce que l’offre gratuite permet réellement"
          },
          "evidence_expected": {
            "en": "Pricing page.",
            "fr": "Page tarifs."
          },
          "levels": [
            {
              "en": "Nothing useful without paying (demo/trial only).",
              "fr": "Aucune fonction utile sans payer (démo/essai seulement)."
            },
            {
              "en": "Very limited free features (< 5 exercises/day or 1 analysis/day).",
              "fr": "Fonctions gratuites très limitées (< 5 exercices/jour ou 1 analyse/jour)."
            },
            {
              "en": "Real daily use is possible for free, within quotas.",
              "fr": "Usage quotidien réel possible gratuitement, avec quotas."
            },
            {
              "en": "The core of the service is free and unlimited.",
              "fr": "Cœur du service gratuit et illimité."
            }
          ]
        },
        {
          "code": "D2",
          "label": {
            "en": "Annual price of the full plan",
            "fr": "Prix annuel de l’offre complète"
          },
          "evidence_expected": {
            "en": "Pricing page (annual price, or 12 × the monthly price if there is no annual plan).",
            "fr": "Page tarifs (prix annuel, ou 12 × mensuel si pas d’annuel)."
          },
          "levels": [
            {
              "en": "> €150/year.",
              "fr": "> 150 €/an."
            },
            {
              "en": "€76-150/year.",
              "fr": "76-150 €/an."
            },
            {
              "en": "€31-75/year.",
              "fr": "31-75 €/an."
            },
            {
              "en": "≤ €30/year, or free.",
              "fr": "≤ 30 €/an ou gratuit."
            }
          ]
        },
        {
          "code": "D3",
          "label": {
            "en": "Commercial transparency (price shown, trial, cancellation)",
            "fr": "Transparence commerciale (prix affiché, essai, annulation)"
          },
          "evidence_expected": {
            "en": "Pricing page, terms of service.",
            "fr": "Page tarifs, CGU."
          },
          "levels": [
            {
              "en": "Price not shown before signing up.",
              "fr": "Prix non affiché avant inscription."
            },
            {
              "en": "Price shown, with no trial and no refund.",
              "fr": "Prix affiché, sans essai ni remboursement."
            },
            {
              "en": "Price shown + trial or refund + cancellation online.",
              "fr": "Prix affiché + essai ou remboursement + annulation en ligne."
            },
            {
              "en": "Price shown + trial with no credit card + one-click cancellation + no surprise auto-renewal.",
              "fr": "Prix affiché + essai sans carte bancaire + annulation en un clic + pas de renouvellement automatique surprise."
            }
          ]
        },
        {
          "code": "D4",
          "label": {
            "en": "Number of paid tiers (how simple the offer is)",
            "fr": "Nombre de paliers payants (simplicité de l’offre)"
          },
          "evidence_expected": {
            "en": "Pricing page.",
            "fr": "Page tarifs."
          },
          "levels": [
            {
              "en": "A subscription AND one-off purchases both needed to unlock everything.",
              "fr": "Abonnement ET achats à l’unité nécessaires pour tout débloquer."
            },
            {
              "en": "Three paid tiers or more.",
              "fr": "Trois paliers payants ou plus."
            },
            {
              "en": "One or two paid tiers, the top tier unlocking everything.",
              "fr": "Un ou deux paliers payants, le palier supérieur débloque tout."
            },
            {
              "en": "A single paid tier, or a service that is entirely free.",
              "fr": "Un seul palier payant, ou service entièrement gratuit."
            }
          ]
        }
      ]
    },
    {
      "code": "E",
      "weight": 8,
      "name": {
        "en": "Evidence and transparency",
        "fr": "Preuves et transparence"
      },
      "why": {
        "en": "What a service claims, and what it proves.",
        "fr": "Ce qu’un service affirme, et ce qu’il prouve."
      },
      "criteria": [
        {
          "code": "E1",
          "label": {
            "en": "Published evidence of effectiveness",
            "fr": "Preuves d’efficacité publiées"
          },
          "evidence_expected": {
            "en": "Page, publication.",
            "fr": "Page, publication."
          },
          "levels": [
            {
              "en": "No data.",
              "fr": "Aucune donnée."
            },
            {
              "en": "Testimonials or a figure with no method behind it (\"3× faster\").",
              "fr": "Témoignages ou chiffre sans méthode (« 3× plus vite »)."
            },
            {
              "en": "Data published with the method described (sample, duration).",
              "fr": "Données publiées avec méthode décrite (échantillon, durée)."
            },
            {
              "en": "Independent or peer-reviewed study.",
              "fr": "Étude indépendante ou revue par des pairs."
            }
          ]
        },
        {
          "code": "E2",
          "label": {
            "en": "Chess verification of the content (positions, lines)",
            "fr": "Vérification échiquéenne des contenus (positions, lignes)"
          },
          "evidence_expected": {
            "en": "Method page.",
            "fr": "Page méthode."
          },
          "levels": [
            {
              "en": "No information on content verification.",
              "fr": "Aucune information sur la vérification des contenus."
            },
            {
              "en": "Corrected once reported.",
              "fr": "Correction sur signalement."
            },
            {
              "en": "Engine checking or review by a titled player announced.",
              "fr": "Vérification moteur ou relecture titrée annoncée."
            },
            {
              "en": "Verification protocol published (legal positions, moves checked, thresholds).",
              "fr": "Protocole de vérification publié (positions légales, coups contrôlés, seuils)."
            }
          ]
        },
        {
          "code": "E3",
          "label": {
            "en": "Transparency of the method (algorithms, code)",
            "fr": "Transparence de la méthode (algorithmes, code)"
          },
          "evidence_expected": {
            "en": "Documentation, repository.",
            "fr": "Documentation, dépôt."
          },
          "levels": [
            {
              "en": "Black box.",
              "fr": "Boîte noire."
            },
            {
              "en": "General description (\"AI\", \"engine\").",
              "fr": "Description générale (« IA », « moteur »)."
            },
            {
              "en": "Algorithms and settings named (engine, depth, SRS).",
              "fr": "Algorithmes et paramètres nommés (moteur, profondeur, SRS)."
            },
            {
              "en": "Source code public OR full technical documentation.",
              "fr": "Code source public OU documentation technique complète."
            }
          ]
        },
        {
          "code": "E4",
          "label": {
            "en": "Marketing claims that can be checked (no overselling)",
            "fr": "Promesses marketing vérifiables (pas de survente)"
          },
          "evidence_expected": {
            "en": "Home page, advertising.",
            "fr": "Page d’accueil, publicité."
          },
          "levels": [
            {
              "en": "An unsourced numeric promise of rating gain.",
              "fr": "Promesse chiffrée de gain de classement non sourcée."
            },
            {
              "en": "Superlatives that cannot be checked (\"world no. 1\").",
              "fr": "Superlatifs invérifiables (« n°1 mondial »)."
            },
            {
              "en": "Factual wording.",
              "fr": "Discours factuel."
            },
            {
              "en": "Factual wording + limits stated explicitly.",
              "fr": "Discours factuel + limites explicitement annoncées."
            }
          ]
        }
      ]
    },
    {
      "code": "F",
      "weight": 8,
      "name": {
        "en": "Content and method",
        "fr": "Contenu et méthode"
      },
      "why": {
        "en": "The courses and the structure of progress. We measure how content is organized by level, who the authors are, the formats, and the volume.",
        "fr": "Les cours et la structure de progression. On mesure la structuration par niveau, l’identité des auteurs, les formats et le volume."
      },
      "criteria": [
        {
          "code": "F1",
          "label": {
            "en": "Courses organized by rating level",
            "fr": "Cours organisés par niveau de classement"
          },
          "evidence_expected": {
            "en": "Catalog.",
            "fr": "Catalogue."
          },
          "levels": [
            {
              "en": "No courses.",
              "fr": "Aucun cours."
            },
            {
              "en": "Courses with no level indicated.",
              "fr": "Cours sans indication de niveau."
            },
            {
              "en": "Courses labeled by level (beginner/intermediate/advanced).",
              "fr": "Cours étiquetés par niveau (débutant/intermédiaire/avancé)."
            },
            {
              "en": "A complete path for each rating band (e.g. 0-800, 800-1200…) up to ≥ 2000.",
              "fr": "Parcours complet par tranche de classement (ex. 0-800, 800-1200…) jusqu’à ≥ 2000."
            }
          ]
        },
        {
          "code": "F2",
          "label": {
            "en": "Course authors named and titled",
            "fr": "Auteurs des cours identifiés et titrés"
          },
          "evidence_expected": {
            "en": "Authors / about page.",
            "fr": "Page auteurs / à-propos."
          },
          "levels": [
            {
              "en": "Authors not identified.",
              "fr": "Auteurs non identifiés."
            },
            {
              "en": "Authors named, without a title.",
              "fr": "Auteurs nommés, sans titre."
            },
            {
              "en": "At least one titled author (FM/IM/GM) named.",
              "fr": "Au moins un auteur titré (FM/IM/GM) nommé."
            },
            {
              "en": "A team of several named titled authors (≥ 3).",
              "fr": "Équipe de plusieurs auteurs titrés nommés (≥ 3)."
            }
          ]
        },
        {
          "code": "F3",
          "label": {
            "en": "Content formats (text, video, interactive)",
            "fr": "Formats du contenu (texte, vidéo, interactif)"
          },
          "evidence_expected": {
            "en": "Catalog.",
            "fr": "Catalogue."
          },
          "levels": [
            {
              "en": "No content.",
              "fr": "Aucun contenu."
            },
            {
              "en": "One format (text OR video).",
              "fr": "Un format (texte OU vidéo)."
            },
            {
              "en": "Two formats.",
              "fr": "Deux formats."
            },
            {
              "en": "Text + video + interactive exercises tied to the content.",
              "fr": "Texte + vidéo + exercices interactifs liés au contenu."
            }
          ]
        },
        {
          "code": "F4",
          "label": {
            "en": "Published method of progression",
            "fr": "Méthode de progression publiée"
          },
          "evidence_expected": {
            "en": "Method page.",
            "fr": "Page méthode."
          },
          "levels": [
            {
              "en": "None.",
              "fr": "Aucune."
            },
            {
              "en": "Generic advice.",
              "fr": "Conseils génériques."
            },
            {
              "en": "Curriculum published with milestones.",
              "fr": "Curriculum publié avec jalons."
            },
            {
              "en": "Curriculum published + adapted to the player’s diagnosis.",
              "fr": "Curriculum publié + adapté au diagnostic du joueur."
            }
          ]
        },
        {
          "code": "F5",
          "label": {
            "en": "How often the content is updated",
            "fr": "Fréquence des mises à jour du contenu"
          },
          "evidence_expected": {
            "en": "Visible dates (blog, changelog, store).",
            "fr": "Dates visibles (blog, changelog, store)."
          },
          "levels": [
            {
              "en": "Content undated, or untouched for > 3 years.",
              "fr": "Contenu sans date ou > 3 ans sans mise à jour."
            },
            {
              "en": "Updated within the last 12 months.",
              "fr": "Mise à jour dans les 12 derniers mois."
            },
            {
              "en": "Updated within the last 3 months.",
              "fr": "Mise à jour dans les 3 derniers mois."
            },
            {
              "en": "Documented publishing at least monthly (changelog, blog, dated catalog).",
              "fr": "Publication au moins mensuelle documentée (changelog, blog, catalogue daté)."
            }
          ]
        }
      ]
    },
    {
      "code": "G",
      "weight": 5,
      "name": {
        "en": "Playing and practice",
        "fr": "Jeu et pratique"
      },
      "why": {
        "en": "Playing is still essential. We measure the size of the pool, how realistic the artificial opponents are, and whether you can replay one specific position.",
        "fr": "Jouer reste indispensable. On mesure le bassin, les adversaires artificiels réalistes et la possibilité de rejouer une position précise."
      },
      "criteria": [
        {
          "code": "G1",
          "label": {
            "en": "Playing humans online (pool, anti-cheating)",
            "fr": "Jouer en ligne contre des humains (bassin, anti-triche)"
          },
          "evidence_expected": {
            "en": "Counter of players online, fair-play page.",
            "fr": "Compteur de connectés, page fair-play."
          },
          "levels": [
            {
              "en": "Not possible.",
              "fr": "Impossible."
            },
            {
              "en": "Small pool (> 1 min wait in blitz, or < 1,000 players online).",
              "fr": "Bassin réduit (attente > 1 min en blitz, ou < 1 000 joueurs connectés)."
            },
            {
              "en": "Medium pool with instant pairing.",
              "fr": "Bassin moyen avec appariement immédiat."
            },
            {
              "en": "Very large pool (≥ 10,000 online), every time control, documented anti-cheating measures.",
              "fr": "Bassin massif (≥ 10 000 connectés), toutes cadences, dispositif anti-triche documenté."
            }
          ]
        },
        {
          "code": "G2",
          "label": {
            "en": "Realistic artificial opponents",
            "fr": "Adversaires artificiels réalistes"
          },
          "evidence_expected": {
            "en": "Product page, technical documentation.",
            "fr": "Page produit, documentation technique."
          },
          "levels": [
            {
              "en": "None.",
              "fr": "Aucun."
            },
            {
              "en": "An engine throttled into levels.",
              "fr": "Moteur bridé par niveaux."
            },
            {
              "en": "Opponents with a personality or a style.",
              "fr": "Adversaires à personnalité ou style."
            },
            {
              "en": "Models trained on human play, calibrated by rating band, with realistic thinking time.",
              "fr": "Modèles entraînés sur le jeu humain, calibrés par tranche de classement, avec temps de réflexion réaliste."
            }
          ]
        },
        {
          "code": "G3",
          "label": {
            "en": "Replaying one specific position against the machine",
            "fr": "Rejouer une position précise contre la machine"
          },
          "evidence_expected": {
            "en": "Product page.",
            "fr": "Page produit."
          },
          "levels": [
            {
              "en": "Not possible.",
              "fr": "Impossible."
            },
            {
              "en": "Play from a position you enter (FEN).",
              "fr": "Jouer depuis une position saisie (FEN)."
            },
            {
              "en": "Replay a position from your own games against the engine.",
              "fr": "Rejouer une position de ses propres parties contre le moteur."
            },
            {
              "en": "Automatically replay the critical positions of your games (the turning point) against a calibrated opponent.",
              "fr": "Rejouer automatiquement les positions critiques de ses parties (point de bascule) contre un adversaire calibré."
            }
          ]
        },
        {
          "code": "G4",
          "label": {
            "en": "Tournaments and organized competition",
            "fr": "Tournois et compétitions organisés"
          },
          "evidence_expected": {
            "en": "Tournaments page.",
            "fr": "Page tournois."
          },
          "levels": [
            {
              "en": "None.",
              "fr": "Aucun."
            },
            {
              "en": "Occasional tournaments.",
              "fr": "Tournois occasionnels."
            },
            {
              "en": "Daily arenas/tournaments.",
              "fr": "Arènes/tournois quotidiens."
            },
            {
              "en": "Daily tournaments + leagues/teams + events with titled players.",
              "fr": "Tournois quotidiens + ligues/équipes + événements titrés."
            }
          ]
        }
      ]
    },
    {
      "code": "H",
      "weight": 5,
      "name": {
        "en": "Experience and accessibility",
        "fr": "Expérience et accessibilité"
      },
      "why": {
        "en": "A tool nobody uses helps nobody improve. We measure the platforms, perceived quality that can be measured (store ratings), languages, accessibility, and offline use.",
        "fr": "Un outil non utilisé ne fait progresser personne. On mesure les plateformes, la qualité perçue mesurable (notes des stores), les langues, l’accessibilité et le hors-ligne."
      },
      "criteria": [
        {
          "code": "H1",
          "label": {
            "en": "Platforms available (web, iOS, Android, desktop)",
            "fr": "Plateformes disponibles (web, iOS, Android, desktop)"
          },
          "evidence_expected": {
            "en": "App stores, download page.",
            "fr": "Stores, page téléchargement."
          },
          "levels": [
            {
              "en": "One non-mobile platform (desktop only).",
              "fr": "Une plateforme non mobile (desktop seul)."
            },
            {
              "en": "Responsive web only OR mobile only.",
              "fr": "Web responsive seul OU mobile seul."
            },
            {
              "en": "Web + one native app (iOS or Android).",
              "fr": "Web + une application native (iOS ou Android)."
            },
            {
              "en": "Web + iOS + Android (+ desktop).",
              "fr": "Web + iOS + Android (+ desktop)."
            }
          ]
        },
        {
          "code": "H2",
          "label": {
            "en": "User ratings and reviews (stores, press)",
            "fr": "Notes et avis des utilisateurs (stores, revues)"
          },
          "evidence_expected": {
            "en": "Store listing (rating, number of reviews), reviews cited.",
            "fr": "Fiche store (note, nombre d’avis), revues citées."
          },
          "levels": [
            {
              "en": "Store rating < 3.5/5 OR no rating and no third-party review.",
              "fr": "Note store < 3,5/5 OU aucune note et aucun avis tiers."
            },
            {
              "en": "Store rating 3.5-4.2 OR mixed third-party reviews.",
              "fr": "Note store 3,5-4,2 OU avis tiers mitigés."
            },
            {
              "en": "Store rating ≥ 4.3 with ≥ 100 reviews OR consistently positive third-party reviews.",
              "fr": "Note store ≥ 4,3 avec ≥ 100 avis OU avis tiers positifs concordants."
            },
            {
              "en": "Store rating ≥ 4.5 with ≥ 1,000 reviews.",
              "fr": "Note store ≥ 4,5 avec ≥ 1 000 avis."
            }
          ]
        },
        {
          "code": "H3",
          "label": {
            "en": "Interface languages available",
            "fr": "Langues d’interface disponibles"
          },
          "evidence_expected": {
            "en": "Language selector, store listing (languages listed).",
            "fr": "Sélecteur de langue, fiche store (langues listées)."
          },
          "levels": [
            {
              "en": "A single interface language.",
              "fr": "Une seule langue d’interface."
            },
            {
              "en": "2 to 4 interface languages.",
              "fr": "2 à 4 langues d’interface."
            },
            {
              "en": "5 interface languages or more.",
              "fr": "5 langues ou plus d’interface."
            },
            {
              "en": "5 languages or more, with the teaching content translated (move notation localized).",
              "fr": "5 langues ou plus, contenu pédagogique traduit (notation des coups localisée)."
            }
          ]
        },
        {
          "code": "H4",
          "label": {
            "en": "Accessibility (keyboard, screen reader)",
            "fr": "Accessibilité (clavier, lecteur d’écran)"
          },
          "evidence_expected": {
            "en": "Accessibility page, FAQ.",
            "fr": "Page accessibilité, FAQ."
          },
          "levels": [
            {
              "en": "No information.",
              "fr": "Aucune information."
            },
            {
              "en": "Size/contrast settings.",
              "fr": "Réglages de taille/contraste."
            },
            {
              "en": "Keyboard navigation AND screen-reader support announced.",
              "fr": "Navigation clavier ET compatibilité lecteur d’écran annoncées."
            },
            {
              "en": "Accessible mode documented (guide) and tested.",
              "fr": "Mode accessible documenté (guide) et testé."
            }
          ]
        },
        {
          "code": "H5",
          "label": {
            "en": "Offline use and known incidents",
            "fr": "Fonctionnement hors ligne et incidents connus"
          },
          "evidence_expected": {
            "en": "Status page, store reviews, documentation.",
            "fr": "Page statut, avis store, documentation."
          },
          "levels": [
            {
              "en": "Fully server-dependent, with no status page.",
              "fr": "Dépend entièrement du serveur, sans page de statut."
            },
            {
              "en": "Server-dependent, with a status page.",
              "fr": "Dépend du serveur, avec une page de statut."
            },
            {
              "en": "Key features available offline (mobile or desktop).",
              "fr": "Fonctions clés disponibles hors-ligne (mobile ou desktop)."
            },
            {
              "en": "Everything works offline (local software) OR a public status page showing uptime.",
              "fr": "Tout fonctionne hors-ligne (logiciel local) OU statut de service public avec disponibilité affichée."
            }
          ]
        }
      ]
    },
    {
      "code": "I",
      "weight": 2,
      "name": {
        "en": "Preparation and study",
        "fr": "Préparation et étude"
      },
      "why": {
        "en": "Everything around training: preparing for an opponent, annotating and sharing a game, entering a game played over the board, finding a game again in your history.",
        "fr": "Ce qui entoure l’entraînement : préparer un adversaire, annoter et partager une partie, entrer une partie jouée sur l’échiquier, retrouver une partie dans son historique."
      },
      "criteria": [
        {
          "code": "I1",
          "label": {
            "en": "Preparing for a named opponent",
            "fr": "Préparation d’un adversaire nommé"
          },
          "evidence_expected": {
            "en": "Product page, screenshot.",
            "fr": "Page produit, capture."
          },
          "levels": [
            {
              "en": "None.",
              "fr": "Aucune."
            },
            {
              "en": "Browsing the games or the public profile of a named player.",
              "fr": "Consultation des parties ou du profil public d’un joueur nommé."
            },
            {
              "en": "Report on a named player: repertoire by color and results.",
              "fr": "Rapport sur un joueur nommé : répertoire par couleur et résultats."
            },
            {
              "en": "Report + weaknesses you can exploit + suggested preparation lines.",
              "fr": "Rapport + faiblesses exploitables + lignes de préparation suggérées."
            }
          ]
        },
        {
          "code": "I2",
          "label": {
            "en": "Annotating and sharing games (studies)",
            "fr": "Annotation et partage de parties (études)"
          },
          "evidence_expected": {
            "en": "Product page.",
            "fr": "Page produit."
          },
          "levels": [
            {
              "en": "None.",
              "fr": "Aucune."
            },
            {
              "en": "Text comments on a game.",
              "fr": "Commentaires texte sur une partie."
            },
            {
              "en": "Variations + comments saved and shareable by link.",
              "fr": "Variantes + commentaires enregistrés et partageables par lien."
            },
            {
              "en": "Collaborative studies (several authors, several chapters) or a public annotation database.",
              "fr": "Études collaboratives (plusieurs auteurs, plusieurs chapitres) ou base d’annotations publique."
            }
          ]
        },
        {
          "code": "I3",
          "label": {
            "en": "Entering a game played at a club (photo, scoresheet)",
            "fr": "Saisie d’une partie jouée en club (photo, feuille de partie)"
          },
          "evidence_expected": {
            "en": "Product page, store.",
            "fr": "Page produit, store."
          },
          "levels": [
            {
              "en": "Not possible.",
              "fr": "Impossible."
            },
            {
              "en": "Entering the moves on a virtual board.",
              "fr": "Saisie des coups sur un échiquier virtuel."
            },
            {
              "en": "Recognition of a position from a photo or a diagram.",
              "fr": "Reconnaissance d’une position depuis une photo ou un diagramme."
            },
            {
              "en": "Recognition of a handwritten scoresheet (OCR) into PGN.",
              "fr": "Reconnaissance d’une feuille de partie manuscrite (OCR) vers PGN."
            }
          ]
        },
        {
          "code": "I4",
          "label": {
            "en": "Searching your games (filters, position)",
            "fr": "Recherche dans vos parties (filtres, position)"
          },
          "evidence_expected": {
            "en": "Product page, screenshot.",
            "fr": "Page produit, capture."
          },
          "levels": [
            {
              "en": "None.",
              "fr": "Aucune."
            },
            {
              "en": "Chronological list.",
              "fr": "Liste chronologique."
            },
            {
              "en": "Filters (opening, result, time control, opponent, color).",
              "fr": "Filtres (ouverture, résultat, cadence, adversaire, couleur)."
            },
            {
              "en": "Search by position, by pattern, or in plain language.",
              "fr": "Recherche par position, par motif ou en langage naturel."
            }
          ]
        }
      ]
    },
    {
      "code": "J",
      "weight": 2,
      "name": {
        "en": "Human coaching and community",
        "fr": "Coaching humain et communauté"
      },
      "why": {
        "en": "Many players get past a plateau with a human across the board. We measure access to coaches, community life and the tools offered to trainers.",
        "fr": "Beaucoup de joueurs franchissent un palier avec un humain en face d’eux. On mesure l’accès à des coachs, la vie de la communauté et les outils pour les entraîneurs."
      },
      "criteria": [
        {
          "code": "J1",
          "label": {
            "en": "Access to human coaches",
            "fr": "Accès à des entraîneurs humains"
          },
          "evidence_expected": {
            "en": "Coaches page, terms.",
            "fr": "Page coachs, conditions."
          },
          "levels": [
            {
              "en": "None.",
              "fr": "Aucun."
            },
            {
              "en": "A list of coaches with no vetting.",
              "fr": "Liste de coachs sans vérification."
            },
            {
              "en": "Vetted coaches (title or rating checked) OR regular group lessons.",
              "fr": "Coachs vérifiés (titre ou classement contrôlé) OU cours collectifs réguliers."
            },
            {
              "en": "Vetted coaches + individual follow-up (feedback on the player’s games) included or bookable.",
              "fr": "Coachs vérifiés + suivi individuel (retour sur les parties du joueur) inclus ou réservable."
            }
          ]
        },
        {
          "code": "J2",
          "label": {
            "en": "Size and activity of the community",
            "fr": "Taille et activité de la communauté"
          },
          "evidence_expected": {
            "en": "Public counter, visible activity.",
            "fr": "Compteur public, activité visible."
          },
          "levels": [
            {
              "en": "None.",
              "fr": "Aucune."
            },
            {
              "en": "Comments or a quiet forum (< 1 visible message a day).",
              "fr": "Commentaires ou forum peu actif (< 1 message/jour visible)."
            },
            {
              "en": "Active forum/Discord (messages every day) OR a club/team.",
              "fr": "Forum/Discord actif (messages quotidiens) OU club/équipe."
            },
            {
              "en": "A community of ≥ 5,000 visible members with daily activity and regular events.",
              "fr": "Communauté ≥ 5 000 membres visibles avec activité quotidienne et événements réguliers."
            }
          ]
        },
        {
          "code": "J3",
          "label": {
            "en": "Tools for trainers, clubs and schools",
            "fr": "Outils pour entraîneurs, clubs et écoles"
          },
          "evidence_expected": {
            "en": "Dedicated page.",
            "fr": "Page dédiée."
          },
          "levels": [
            {
              "en": "None.",
              "fr": "Aucun."
            },
            {
              "en": "Several accounts under one subscription.",
              "fr": "Comptes multiples sous un abonnement."
            },
            {
              "en": "Coach area: list of students, assignments, activity tracking.",
              "fr": "Espace coach : liste d’élèves, devoirs, suivi d’activité."
            },
            {
              "en": "Coach area with a diagnosis for each student (weaknesses, progress) and a group view.",
              "fr": "Espace coach avec diagnostic par élève (faiblesses, progression) et vue de groupe."
            }
          ]
        },
        {
          "code": "J4",
          "label": {
            "en": "Engagement mechanics (streaks, virtual currency, reminders)",
            "fr": "Mécaniques d’engagement (séries, monnaies virtuelles, relances)"
          },
          "evidence_expected": {
            "en": "Screen, terms of service, store.",
            "fr": "Écran, CGU, store."
          },
          "levels": [
            {
              "en": "Paid engagement mechanics (virtual currency, boosters, weekly subscription).",
              "fr": "Mécaniques d’engagement payantes (monnaie virtuelle, boosters, abonnement hebdomadaire)."
            },
            {
              "en": "Streaks/leaderboards with no paid mechanic, but with pushy reminders.",
              "fr": "Séries/classements sans mécanique payante mais avec relances insistantes."
            },
            {
              "en": "Streaks/leaderboards with no commercial pressure.",
              "fr": "Séries/classements sans pression commerciale."
            },
            {
              "en": "Visible progress without a compulsory leaderboard, and it can be switched off.",
              "fr": "Progression visible sans classement obligatoire, désactivable."
            }
          ]
        }
      ]
    },
    {
      "code": "K",
      "weight": 2,
      "name": {
        "en": "Personal data and interoperability",
        "fr": "Données personnelles et interopérabilité"
      },
      "why": {
        "en": "What players can get back of their own data, what is done with it, and whether the service can talk to other tools.",
        "fr": "Ce que le joueur peut récupérer de ses données, ce qui en est fait, et si le service peut dialoguer avec d’autres outils."
      },
      "criteria": [
        {
          "code": "K1",
          "label": {
            "en": "Exporting your data (games, repertoire)",
            "fr": "Export de vos données (parties, répertoire)"
          },
          "evidence_expected": {
            "en": "FAQ, account page.",
            "fr": "FAQ, page compte."
          },
          "levels": [
            {
              "en": "No export.",
              "fr": "Aucun export."
            },
            {
              "en": "Export on request (by email).",
              "fr": "Export sur demande (mail)."
            },
            {
              "en": "PGN export of your games or your repertoire.",
              "fr": "Export PGN des parties ou du répertoire."
            },
            {
              "en": "Full self-service export (games, repertoire, personal data).",
              "fr": "Export complet en libre-service (parties, répertoire, données personnelles)."
            }
          ]
        },
        {
          "code": "K2",
          "label": {
            "en": "Protection of personal data (GDPR, hosting)",
            "fr": "Protection des données personnelles (RGPD, hébergement)"
          },
          "evidence_expected": {
            "en": "Privacy policy.",
            "fr": "Politique de confidentialité."
          },
          "levels": [
            {
              "en": "No privacy policy found.",
              "fr": "Aucune politique de confidentialité trouvée."
            },
            {
              "en": "Policy present; hosting unspecified or third-party trackers.",
              "fr": "Politique présente ; hébergement non précisé ou traceurs tiers."
            },
            {
              "en": "GDPR-compliant policy, no resale, hosting specified.",
              "fr": "Politique conforme RGPD, pas de revente, hébergement précisé."
            },
            {
              "en": "GDPR + EU hosting + no advertising trackers.",
              "fr": "RGPD + hébergement UE + aucun traceur publicitaire."
            }
          ]
        },
        {
          "code": "K3",
          "label": {
            "en": "Public API and source code",
            "fr": "API publique et code source"
          },
          "evidence_expected": {
            "en": "Documentation, repository.",
            "fr": "Documentation, dépôt."
          },
          "levels": [
            {
              "en": "Closed.",
              "fr": "Fermé."
            },
            {
              "en": "Standard import/export (PGN) only.",
              "fr": "Import/export standard (PGN) seulement."
            },
            {
              "en": "Documented public API.",
              "fr": "API publique documentée."
            },
            {
              "en": "Open source code.",
              "fr": "Code source ouvert."
            }
          ]
        }
      ]
    }
  ],
  "services": [
    {
      "slug": "chesspivot",
      "name": "ChessPivot",
      "url": "https://www.chesspivot.com/fr",
      "kind": "platform",
      "type": {
        "en": "weakness diagnosis and targeted training",
        "fr": "diagnostic de faiblesses et entraînement ciblé"
      },
      "price": {
        "en": "€64.99/yr (annual price shown on /fr/tarifs; monthly €9.00/mo; EN version: $69.99/yr ≈ €64)",
        "fr": "64,99 €/an (annuel affiché sur /fr/tarifs ; mensuel 9,00 €/mois ; version EN : 69,99 $/an ≈ 64 €)"
      },
      "languages": 2,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 8.38,
      "unweighted_score": 7.36,
      "category_scores": {
        "A": 10,
        "B": 10,
        "C": 9.6,
        "D": 8.3,
        "E": 5.8,
        "F": 7.3,
        "G": 2.5,
        "H": 5.3,
        "I": 8.3,
        "J": 5,
        "K": 8.9
      },
      "scores": {
        "A": [
          3,
          3,
          3,
          3,
          3,
          3,
          3,
          3
        ],
        "B": [
          3,
          3,
          3,
          3,
          3,
          3
        ],
        "C": [
          3,
          3,
          3,
          3,
          3,
          2,
          3,
          3,
          3
        ],
        "D": [
          2,
          2,
          3,
          3
        ],
        "E": [
          0,
          2,
          2,
          3
        ],
        "F": [
          2,
          1,
          2,
          3,
          3
        ],
        "G": [
          0,
          1,
          2,
          0
        ],
        "H": [
          1,
          0,
          1,
          3,
          3
        ],
        "I": [
          3,
          1,
          3,
          3
        ],
        "J": [
          0,
          0,
          3,
          3
        ],
        "K": [
          3,
          3,
          2
        ]
      },
      "evidence_urls": {
        "A": [
          "https://www.chesspivot.com/fr/analyser-parties-club",
          "https://www.chesspivot.com/fr/methodologie",
          "https://www.chesspivot.com/fr/methodologie",
          "https://www.chesspivot.com/fr/methodologie",
          "https://www.chesspivot.com/fr/analyse",
          "https://www.chesspivot.com/en/methodology",
          "https://www.chesspivot.com/fr/methodologie",
          "https://www.chesspivot.com/fr/methodologie"
        ],
        "B": [
          "https://www.chesspivot.com/en/import-a-repertoire",
          "https://www.chesspivot.com/en/openings",
          "https://www.chesspivot.com/en/openings",
          "https://www.chesspivot.com/en/methodology",
          "https://www.chesspivot.com/en/openings/italian-game#explorateur",
          "https://www.chesspivot.com/fr/ouvertures/gambit-dame"
        ],
        "C": [
          "https://www.chesspivot.com/fr/faiblesses/fourchette-manquee",
          "https://www.chesspivot.com/fr/methodologie",
          "https://www.chesspivot.com/en/exercises",
          "https://www.chesspivot.com/en/exercises",
          "https://www.chesspivot.com/fr/exercices",
          "https://www.chesspivot.com/fr/exercices",
          "https://www.chesspivot.com/fr/methodologie",
          "https://www.chesspivot.com/en/methodology",
          "https://www.chesspivot.com/fr/plan"
        ],
        "D": [
          "https://www.chesspivot.com/fr/tarifs",
          "https://www.chesspivot.com/fr/tarifs",
          "https://www.chesspivot.com/en/pricing",
          "https://www.chesspivot.com/fr/tarifs"
        ],
        "E": [
          "https://www.chesspivot.com/fr/methodologie",
          "https://www.chesspivot.com/en/methodology",
          "https://www.chesspivot.com/en/methodology",
          "https://www.chesspivot.com/fr/a-propos"
        ],
        "F": [
          "https://www.chesspivot.com/fr/apprendre",
          "https://www.chesspivot.com/fr/a-propos",
          "https://www.chesspivot.com/fr/apprendre",
          "https://www.chesspivot.com/en/learn",
          "https://www.chesspivot.com/en/changelog"
        ],
        "G": [
          "https://www.chesspivot.com/fr",
          "https://www.chesspivot.com/fr/exercices",
          "https://www.chesspivot.com/fr/exercices",
          "https://www.chesspivot.com/fr/exercices"
        ],
        "H": [
          "https://www.chesspivot.com/fr/a-propos",
          "https://www.chesspivot.com/fr/a-propos",
          "https://www.chesspivot.com/fr",
          "https://www.chesspivot.com/en/accessibility",
          "https://www.chesspivot.com/en/status"
        ],
        "I": [
          "https://www.chesspivot.com/fr/methodologie",
          "https://www.chesspivot.com/fr/pour-les-entraineurs",
          "https://www.chesspivot.com/fr/analyser-parties-club",
          "https://www.chesspivot.com/fr/explorer-parties"
        ],
        "J": [
          "https://www.chesspivot.com/fr/pour-les-entraineurs",
          "https://www.chesspivot.com/fr/a-propos",
          "https://www.chesspivot.com/fr/pour-les-entraineurs",
          "https://www.chesspivot.com/en/pricing"
        ],
        "K": [
          "https://www.chesspivot.com/en/my-accounts",
          "https://www.chesspivot.com/en/privacy",
          "https://www.chesspivot.com/en/api"
        ]
      },
      "sources": [
        "https://www.chesspivot.com/fr/a-propos",
        "https://www.chesspivot.com/fr/mentions-legales",
        "https://www.chesspivot.com/fr/blog",
        "https://www.chesspivot.com/fr/tarifs",
        "https://www.chesspivot.com/fr/methodologie",
        "https://www.chesspivot.com/fr/confidentialite",
        "https://www.chesspivot.com/fr/nouveautes",
        "https://www.chesspivot.com/fr/statut",
        "https://www.chesspivot.com/fr/mes-comptes",
        "https://www.chesspivot.com/fr/ouvertures",
        "https://www.chesspivot.com/fr/api",
        "https://www.chesspivot.com/fr/accessibilite",
        "https://www.chesspivot.com/fr/apprendre"
      ],
      "review_url": "https://www.chesspivot.com/en/reviews/chesspivot",
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 5.78,
        "criteria": [
          {
            "code": "A1",
            "status": "quota-real",
            "quota": "Parties suivies : « 20 » (gratuit) — Plus : « illimité + import auto »",
            "source_url": "https://www.chesspivot.com/fr/tarifs",
            "note_fr": "Import Chess.com/Lichess/PGN inclus ; le gratuit plafonne les parties suivies à 20."
          },
          {
            "code": "A2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chesspivot.com/fr/tarifs",
            "note_fr": "« Analyse d'une partie : illimitée » dans la colonne Gratuit."
          },
          {
            "code": "A3",
            "status": "quota-real",
            "quota": "Faiblesses : « top 3 » (gratuit) — Plus : « toutes, suivies dans le temps »",
            "source_url": "https://www.chesspivot.com/fr/tarifs",
            "note_fr": "Le gratuit affiche les 3 faiblesses principales."
          },
          {
            "code": "A4",
            "status": "quota-real",
            "quota": "Faiblesses : « top 3 »",
            "source_url": "https://www.chesspivot.com/fr/tarifs",
            "note_fr": "La typologie (31 motifs, 6 axes) s'applique à l'analyse ; le gratuit n'en voit que le top 3."
          },
          {
            "code": "A5",
            "status": "quota-real",
            "quota": "Coaching : « moment clé n°1 » (gratuit) — Plus : « tous les coups + approfondi »",
            "source_url": "https://www.chesspivot.com/fr/tarifs",
            "note_fr": "Une explication par partie (le moment clé) ; analyses de parties illimitées."
          },
          {
            "code": "A6",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chesspivot.com/fr/methodologie",
            "note_fr": "Procédure et taux publiés sur une page publique, indépendants du plan."
          },
          {
            "code": "A7",
            "status": "paid",
            "quota": null,
            "source_url": "https://www.chesspivot.com/fr/tarifs",
            "note_fr": "« toutes, suivies dans le temps » figure en colonne Plus ; le gratuit (top 3) n'a pas de suivi temporel."
          },
          {
            "code": "A8",
            "status": "quota-real",
            "quota": "Faiblesses : « top 3 »",
            "source_url": "https://www.chesspivot.com/fr/tarifs",
            "note_fr": "La comparaison à la tranche s'affiche sur chaque faiblesse ; le gratuit en voit 3."
          },
          {
            "code": "B1",
            "status": "paid",
            "quota": null,
            "source_url": "https://www.chesspivot.com/fr/tarifs",
            "note_fr": "Répertoire : « création pendant l'essai 30 j, puis visibles mais verrouillées » — un essai limité dans le temps n'est pas du gratuit."
          },
          {
            "code": "B2",
            "status": "paid",
            "quota": null,
            "source_url": "https://www.chesspivot.com/fr/tarifs",
            "note_fr": "« Pratiquer + Réviser (SRS) partout » en colonne Plus ; gratuit après essai = « Apprendre + Arbres des variantes »."
          },
          {
            "code": "B3",
            "status": "paid",
            "quota": null,
            "source_url": "https://www.chesspivot.com/fr/tarifs",
            "note_fr": "Les sorties de répertoire alimentent les révisions SRS (Plus) ; le répertoire gratuit est verrouillé hors essai."
          },
          {
            "code": "B4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chesspivot.com/fr/methodologie",
            "note_fr": "Vérification moteur des lignes publiée ; visible sur les fiches publiques."
          },
          {
            "code": "B5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chesspivot.com/fr/ouvertures/partie-italienne",
            "note_fr": "Explorateur affiché sur les fiches d'ouverture publiques (sans compte) ; la base « Tes parties importées » suppose un compte avec parties."
          },
          {
            "code": "B6",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chesspivot.com/fr/ouvertures/gambit-dame",
            "note_fr": "Fiches d'ouverture (plans, pièges, parties modèles) publiques."
          },
          {
            "code": "C1",
            "status": "quota-symbolic",
            "quota": "Exercices issus de tes parties : « 3 / axe » (gratuit) — Plus : « illimité + Rush perso »",
            "source_url": "https://www.chesspivot.com/fr/tarifs",
            "note_fr": "3 par axe, sans mention de renouvellement quotidien (contrairement à la banque « renouvelés »)."
          },
          {
            "code": "C2",
            "status": "quota-real",
            "quota": "Banque d'exercices vérifiés : « 3 / type / jour (renouvelés) »",
            "source_url": "https://www.chesspivot.com/fr/tarifs",
            "note_fr": "3 par type et par jour sur de nombreux types d'exercices : au total largement ≥ 5/jour."
          },
          {
            "code": "C3",
            "status": "quota-real",
            "quota": "« 3 / type / jour (renouvelés) »",
            "source_url": "https://www.chesspivot.com/fr/tarifs",
            "note_fr": "Les modes finale sont des types de la banque."
          },
          {
            "code": "C4",
            "status": "quota-real",
            "quota": "« 3 / type / jour (renouvelés) »",
            "source_url": "https://www.chesspivot.com/fr/tarifs",
            "note_fr": "Les thèmes stratégiques sont des types de la banque."
          },
          {
            "code": "C5",
            "status": "quota-real",
            "quota": "« 3 / type / jour (renouvelés) »",
            "source_url": "https://www.chesspivot.com/fr/tarifs",
            "note_fr": "Les 6 modes défense sont des types de la banque."
          },
          {
            "code": "C6",
            "status": "quota-real",
            "quota": "« 3 / type / jour (renouvelés) »",
            "source_url": "https://www.chesspivot.com/fr/tarifs",
            "note_fr": "Calcul et à l'aveugle sont des types de la banque."
          },
          {
            "code": "C7",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chesspivot.com/fr/methodologie",
            "note_fr": "L'ajustement de difficulté (cible ≈ 80 %) s'applique aux exercices servis, quel que soit le plan."
          },
          {
            "code": "C8",
            "status": "paid",
            "quota": null,
            "source_url": "https://www.chesspivot.com/fr/tarifs",
            "note_fr": "« Réviser (SRS) » figure en colonne Plus ; répertoire gratuit verrouillé hors essai."
          },
          {
            "code": "C9",
            "status": "quota-real",
            "quota": "« 3 / type / jour (renouvelés) » et faiblesses « top 3 »",
            "source_url": "https://www.chesspivot.com/fr/tarifs",
            "note_fr": "« Mon plan » n'est pas restreint sur /fr/tarifs ; ses entrées (faiblesses, exercices) sont celles du quota gratuit."
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chesspivot.com/fr/tarifs",
            "note_fr": "Tableau Gratuit/Plus public et chiffré."
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chesspivot.com/fr/tarifs",
            "note_fr": "Prix affiché publiquement (64,99 €/an)."
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chesspivot.com/fr/tarifs",
            "note_fr": "« Nos quatre garanties » publiques, valables pour tous."
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chesspivot.com/fr/tarifs",
            "note_fr": "Un seul palier payant, information publique."
          },
          {
            "code": "E1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chesspivot.com/fr/methodologie",
            "note_fr": "Publication publique, indépendante du plan."
          },
          {
            "code": "E3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chesspivot.com/fr/methodologie",
            "note_fr": "Publication publique, indépendante du plan."
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chesspivot.com/fr/a-propos",
            "note_fr": "Discours public, indépendant du plan."
          },
          {
            "code": "F1",
            "status": "undocumented",
            "quota": null,
            "source_url": "https://www.chesspivot.com/fr/apprendre",
            "note_fr": "Le statut gratuit des leçons n'est précisé ni sur /fr/tarifs ni sur /fr/apprendre (seul un déverrouillage PAR NIVEAU y est mentionné : « Débloqué au niveau Intermédiaire »)."
          },
          {
            "code": "F2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chesspivot.com/fr/a-propos",
            "note_fr": "Information publique."
          },
          {
            "code": "F3",
            "status": "undocumented",
            "quota": null,
            "source_url": "https://www.chesspivot.com/fr/apprendre",
            "note_fr": "Même constat que F1 : accès gratuit aux leçons non documenté sur les pages publiques."
          },
          {
            "code": "F4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chesspivot.com/fr/apprendre",
            "note_fr": "Méthode publiée sur pages publiques."
          },
          {
            "code": "F5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chesspivot.com/fr/nouveautes",
            "note_fr": "Journal public des mises à jour."
          },
          {
            "code": "G1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G2",
            "status": "quota-symbolic",
            "quota": "Exercices issus de tes parties : « 3 / axe »",
            "source_url": "https://www.chesspivot.com/fr/tarifs",
            "note_fr": "L'IA qui résiste vit dans « Convertir l'avantage », exercice issu de tes parties (3/axe en gratuit)."
          },
          {
            "code": "G3",
            "status": "quota-symbolic",
            "quota": "Exercices issus de tes parties : « 3 / axe »",
            "source_url": "https://www.chesspivot.com/fr/tarifs",
            "note_fr": "Rejouer ses positions gagnantes = exercice issu de tes parties."
          },
          {
            "code": "G4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chesspivot.com/fr",
            "note_fr": "Web seul, accessible à tous."
          },
          {
            "code": "H2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chesspivot.com/fr",
            "note_fr": "FR/EN pour tous."
          },
          {
            "code": "H4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chesspivot.com/fr/accessibilite",
            "note_fr": "Guide public, s'applique à tout le site."
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chesspivot.com/fr/statut",
            "note_fr": "Page de statut publique."
          },
          {
            "code": "I1",
            "status": "quota-symbolic",
            "quota": "Scout adversaires : « 1 / mois · 30 parties/adversaire » (gratuit) — Plus : « 15 / mois · 100 parties/adversaire »",
            "source_url": "https://www.chesspivot.com/fr/tarifs",
            "note_fr": "1/mois : sous la frontière d'un usage quotidien réel."
          },
          {
            "code": "I2",
            "status": "undocumented",
            "quota": null,
            "source_url": "https://www.chesspivot.com/fr/pour-les-entraineurs",
            "note_fr": "Les commentaires de coach ne sont rattachés à aucun plan sur les pages publiques."
          },
          {
            "code": "I3",
            "status": "quota-real",
            "quota": "« Jusqu'à 1000 parties — toute ta carrière tient, et les parties sur échiquier ne périment jamais. »",
            "source_url": "https://www.chesspivot.com/fr/analyser-parties-club",
            "note_fr": "Scan photo→PGN présenté sans restriction de plan ; « Analyse d'une partie : illimitée » sur /fr/tarifs."
          },
          {
            "code": "I4",
            "status": "quota-symbolic",
            "quota": "Explorer : « 3 recherches / mois » (gratuit) — Plus : « illimité + historique »",
            "source_url": "https://www.chesspivot.com/fr/tarifs",
            "note_fr": "3/mois : sous la frontière d'un usage quotidien réel."
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J3",
            "status": "undocumented",
            "quota": null,
            "source_url": "https://www.chesspivot.com/fr/pour-les-entraineurs",
            "note_fr": "Aucune ligne coach/club dans le tableau Gratuit/Plus ; statut gratuit non établi."
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chesspivot.com/fr/tarifs",
            "note_fr": "« les classements et les séries se désactivent d'un bouton dans votre espace de compte » — pour tous les comptes."
          },
          {
            "code": "K1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chesspivot.com/fr/confidentialite",
            "note_fr": "Export JSON/PGN décrit sans restriction de plan (droit de portabilité)."
          },
          {
            "code": "K2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chesspivot.com/fr/confidentialite",
            "note_fr": "Protection identique pour tous les comptes."
          },
          {
            "code": "K3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chesspivot.com/fr/api",
            "note_fr": "« 30 requêtes par minute et par adresse IP » — limite technique pour tous ; aucune restriction de plan mentionnée sur la page API."
          }
        ]
      }
    },
    {
      "slug": "lichess",
      "name": "Lichess",
      "url": "https://lichess.org",
      "kind": "platform",
      "type": {
        "en": "complete free chess server",
        "fr": "serveur d’échecs libre complet"
      },
      "price": {
        "en": "€0 (free, rule: free; optional \"Patron\" donation, amount not shown before clicking through on lichess.org/patron, with no reserved feature)",
        "fr": "0 € (gratuit, règle : gratuit ; don « Patron » facultatif, montant non affiché avant clic sur lichess.org/patron, sans fonction réservée)"
      },
      "languages": 80,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 6.15,
      "unweighted_score": 6.87,
      "category_scores": {
        "A": 3.3,
        "B": 6.1,
        "C": 5.6,
        "D": 10,
        "E": 5,
        "F": 5.3,
        "G": 8.3,
        "H": 7.3,
        "I": 7.5,
        "J": 8.3,
        "K": 8.9
      },
      "scores": {
        "A": [
          2,
          1,
          1,
          1,
          1,
          0,
          1,
          1
        ],
        "B": [
          2,
          2,
          1,
          2,
          3,
          1
        ],
        "C": [
          2,
          3,
          2,
          1,
          2,
          1,
          2,
          1,
          1
        ],
        "D": [
          3,
          3,
          3,
          3
        ],
        "E": [
          0,
          1,
          3,
          2
        ],
        "F": [
          1,
          1,
          2,
          1,
          3
        ],
        "G": [
          3,
          2,
          2,
          3
        ],
        "H": [
          3,
          1,
          3,
          2,
          2
        ],
        "I": [
          2,
          3,
          1,
          3
        ],
        "J": [
          3,
          3,
          1,
          3
        ],
        "K": [
          2,
          3,
          3
        ]
      },
      "evidence_urls": {
        "A": [
          "https://lichess.org/",
          "https://lichess.org/faq",
          "https://lichess.org/insights/thibault",
          "https://raw.githubusercontent.com/lichess-org/lila/master/translation/source/puzzle.xml",
          "https://raw.githubusercontent.com/lichess-org/lila/master/translation/source/site.xml",
          "https://lichess.org/faq",
          "https://lichess.org/player",
          "https://lichess.org/player"
        ],
        "B": [
          "https://lichess.org/study",
          "https://raw.githubusercontent.com/lichess-org/lila/master/translation/source/study.xml",
          "https://lichess.org/insights/thibault",
          "https://lichess.org/api/openapi.yaml",
          "https://lichess.org/api/openapi.yaml",
          "https://lichess.org/opening"
        ],
        "C": [
          "https://raw.githubusercontent.com/lichess-org/lila/master/translation/source/puzzleTheme.xml",
          "https://database.lichess.org/",
          "https://lichess.org/practice",
          "https://lichess.org/study",
          "https://raw.githubusercontent.com/lichess-org/lila/master/translation/source/puzzleTheme.xml",
          "https://lichess.org/",
          "https://raw.githubusercontent.com/lichess-org/lila/master/translation/source/puzzle.xml",
          "https://raw.githubusercontent.com/lichess-org/lila/master/translation/source/puzzle.xml",
          "https://raw.githubusercontent.com/lichess-org/lila/master/translation/source/puzzle.xml"
        ],
        "D": [
          "https://lichess.org/patron",
          "https://lichess.org/patron",
          "https://lichess.org/patron",
          "https://lichess.org/features"
        ],
        "E": [
          "https://lichess.org/about",
          "https://raw.githubusercontent.com/lichess-org/lila/master/translation/source/puzzle.xml",
          "https://github.com/lichess-org/lila",
          "https://lichess.org/about"
        ],
        "F": [
          "https://raw.githubusercontent.com/lichess-org/lila/master/translation/source/learn.xml",
          "https://lichess.org/study",
          "https://lichess.org/",
          "https://raw.githubusercontent.com/lichess-org/lila/master/translation/source/learn.xml",
          "https://lichess.org/blog"
        ],
        "G": [
          "https://lichess.org/about",
          "https://lichess.org/@/maia1",
          "https://raw.githubusercontent.com/lichess-org/lila/master/translation/source/site.xml",
          "https://lichess.org/tournament"
        ],
        "H": [
          "https://lichess.org/mobile",
          "https://apps.apple.com/app/lichess/id1662361230",
          "https://lichess.org/faq",
          "https://lichess.org/about",
          "https://apps.apple.com/app/lichess/id1662361230"
        ],
        "I": [
          "https://lichess.org/features",
          "https://raw.githubusercontent.com/lichess-org/lila/master/translation/source/study.xml",
          "https://lichess.org/features",
          "https://raw.githubusercontent.com/lichess-org/lila-openingexplorer/master/README.md"
        ],
        "J": [
          "https://lichess.org/coach",
          "https://lichess.org/forum",
          "https://lichess.org/class",
          "https://raw.githubusercontent.com/lichess-org/lila/master/translation/source/preferences.xml"
        ],
        "K": [
          "https://lichess.org/api/openapi.yaml",
          "https://lichess.org/privacy",
          "https://github.com/lichess-org/lila"
        ]
      },
      "sources": [
        "https://lichess.org/about",
        "https://lichess.org/patron",
        "https://lichess.org/blog",
        "https://lichess.org/@/Lichess/blog/more-than-a-half-year-update-2026/Bu77Rba1",
        "https://github.com/lichess-org/lila",
        "https://apps.apple.com/us/app/id1662361230"
      ],
      "review_url": "https://www.chesspivot.com/en/reviews/lichess",
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 6.15,
        "criteria": [
          {
            "code": "A1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lichess.org/features",
            "note_fr": "« All features are free for everybody, forever! » ; import PGN inclus (pas de connexion Chess.com, cf. note du critère)."
          },
          {
            "code": "A2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lichess.org/features",
            "note_fr": "Analyse serveur Stockfish sur demande, gratuite, aucun quota publié ; « Yes, both accounts have the same features! »"
          },
          {
            "code": "A3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lichess.org/features",
            "note_fr": "Insights gratuits comme tout le reste."
          },
          {
            "code": "A4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lichess.org/features",
            "note_fr": "Thèmes de puzzles / Improvement areas gratuits."
          },
          {
            "code": "A5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lichess.org/features",
            "note_fr": "Étiquettes gaffe/erreur et « Learn from your mistakes » gratuits."
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A7",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lichess.org/features",
            "note_fr": "Courbes de rating gratuites."
          },
          {
            "code": "A8",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lichess.org/features",
            "note_fr": "Classements publics gratuits."
          },
          {
            "code": "B1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lichess.org/features",
            "note_fr": "Études (chapitres, import, arbre de variantes) gratuites."
          },
          {
            "code": "B2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lichess.org/features",
            "note_fr": "Leçons interactives des études gratuites."
          },
          {
            "code": "B3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lichess.org/features",
            "note_fr": "Statistiques par ouverture (Insights) gratuites."
          },
          {
            "code": "B4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lichess.org/features",
            "note_fr": "Explorateur sourcé + cloud evaluations gratuits."
          },
          {
            "code": "B5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lichess.org/features",
            "note_fr": "« Opening explorer (6 billion games) » listé dans les fonctions gratuites."
          },
          {
            "code": "B6",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lichess.org/opening",
            "note_fr": "Pages d'ouvertures publiques."
          },
          {
            "code": "C1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lichess.org/features",
            "note_fr": "Thème de puzzles « Player games » (puzzles tirés de vos parties) gratuit."
          },
          {
            "code": "C2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lichess.org/features",
            "note_fr": "« Puzzle training (Streak, Storm, Racer) » gratuit, sans quota."
          },
          {
            "code": "C3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lichess.org/practice",
            "note_fr": "Modules Practice de finales gratuits ; tablebases gratuites."
          },
          {
            "code": "C4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lichess.org/study",
            "note_fr": "Études communautaires gratuites."
          },
          {
            "code": "C5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lichess.org/features",
            "note_fr": "Thème de puzzles « Defensive move » gratuit."
          },
          {
            "code": "C6",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lichess.org/features",
            "note_fr": "Learn › Coordinates gratuit."
          },
          {
            "code": "C7",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lichess.org/features",
            "note_fr": "Cote de puzzles Glicko-2 et réglage de difficulté gratuits."
          },
          {
            "code": "C8",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lichess.org/features",
            "note_fr": "Puzzle history (rejouer les ratés) gratuit — pas de répétition espacée, cf. note du critère."
          },
          {
            "code": "C9",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lichess.org/features",
            "note_fr": "« Improvement areas » gratuit (conseil générique)."
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lichess.org/patron",
            "note_fr": "« Lichess is entirely free, forever, and for everyone »."
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lichess.org/patron",
            "note_fr": "Aucune offre payante ; don facultatif sans fonction réservée."
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lichess.org/patron",
            "note_fr": "Rien à acheter."
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lichess.org/features",
            "note_fr": "« All features are free for everybody, forever! »"
          },
          {
            "code": "E1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lichess.org/features",
            "note_fr": "Votes Great/Bad puzzle ouverts à tous."
          },
          {
            "code": "E3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/lichess-org/lila",
            "note_fr": "Code AGPL-3.0 public."
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lichess.org/about",
            "note_fr": "Discours public."
          },
          {
            "code": "F1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lichess.org/features",
            "note_fr": "Leçons de base (Learn) gratuites."
          },
          {
            "code": "F2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lichess.org/study",
            "note_fr": "Études et auteurs accessibles gratuitement."
          },
          {
            "code": "F3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lichess.org/features",
            "note_fr": "Learn, Practice, Study, Video library gratuits."
          },
          {
            "code": "F4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lichess.org/features",
            "note_fr": "Progression de stades des bases, gratuite."
          },
          {
            "code": "F5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lichess.org/blog",
            "note_fr": "Blog public."
          },
          {
            "code": "G1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lichess.org/features",
            "note_fr": "Jeu illimité toutes cadences, arènes et Swiss compris ; anti-triche documenté."
          },
          {
            "code": "G2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lichess.org/features",
            "note_fr": "Jeu contre Stockfish et bots (Maia) gratuit."
          },
          {
            "code": "G3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lichess.org/features",
            "note_fr": "« Continue from here » / « Practice with computer » gratuits."
          },
          {
            "code": "G4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lichess.org/tournament",
            "note_fr": "Arènes et tournois Swiss ouverts à tous, gratuits."
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lichess.org/mobile",
            "note_fr": "Web + iOS + Android + F-Droid, gratuits."
          },
          {
            "code": "H2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/app/lichess/id1662361230",
            "note_fr": "Avis publics des stores."
          },
          {
            "code": "H3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lichess.org/features",
            "note_fr": "« 140+ language support » gratuit."
          },
          {
            "code": "H4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lichess.org/about",
            "note_fr": "Blind mode / saisie clavier gratuits."
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lichess.org/mobile",
            "note_fr": "Puzzles et analyse hors-ligne dans l'app gratuite."
          },
          {
            "code": "I1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lichess.org/features",
            "note_fr": "« Personal opening explorer (also works on other players) » gratuit."
          },
          {
            "code": "I2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lichess.org/study",
            "note_fr": "Études multi-chapitres, partage et clonage gratuits."
          },
          {
            "code": "I3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lichess.org/features",
            "note_fr": "Board editor et Import game gratuits (pas de photo/OCR)."
          },
          {
            "code": "I4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lichess.org/features",
            "note_fr": "Recherche et explorateur personnel gratuits."
          },
          {
            "code": "J1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lichess.org/coach",
            "note_fr": "Annuaire et contact gratuits ; les leçons elles-mêmes se paient au coach, hors plateforme."
          },
          {
            "code": "J2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lichess.org/forum",
            "note_fr": "Forum et équipes ouverts à tous."
          },
          {
            "code": "J3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lichess.org/class",
            "note_fr": "Lichess Classes gratuit."
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lichess.org/features",
            "note_fr": "Zen mode / masquage des ratings gratuits ; aucune mécanique payante."
          },
          {
            "code": "K1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lichess.org/api",
            "note_fr": "« Download all games of any user in PGN » gratuit."
          },
          {
            "code": "K2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lichess.org/privacy",
            "note_fr": "Identique pour tous les comptes."
          },
          {
            "code": "K3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lichess.org/api",
            "note_fr": "API publique et code AGPL, gratuits."
          }
        ]
      }
    },
    {
      "slug": "chess-com",
      "name": "Chess.com",
      "url": "https://www.chess.com",
      "kind": "platform",
      "type": {
        "en": "All-in-one play + training platform",
        "fr": "Plateforme tout-en-un jeu + formation"
      },
      "price": {
        "en": "Diamond €125.04/yr (€10.42/mo billed annually; Platinum €7.09/mo, i.e. €85.08/yr; Gold €4.17/mo, i.e. €50.04/yr) — read by hand on /membership, 2026-09-01.",
        "fr": "Diamond 125,04 €/an (10,42 €/mois facturé annuellement ; Platinum 7,09 €/mois soit 85,08 €/an ; Gold 4,17 €/mois soit 50,04 €/an) — relevé à la main sur /membership le 01/09/2026."
      },
      "languages": 50,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 5.71,
      "unweighted_score": 6.02,
      "category_scores": {
        "A": 6.3,
        "B": 5.6,
        "C": 4.4,
        "D": 5,
        "E": 2.5,
        "F": 8.7,
        "G": 8.3,
        "H": 7.3,
        "I": 5,
        "J": 7.5,
        "K": 5.6
      },
      "scores": {
        "A": [
          2,
          2,
          2,
          2,
          2,
          0,
          2,
          3
        ],
        "B": [
          1,
          2,
          1,
          2,
          2,
          2
        ],
        "C": [
          1,
          2,
          3,
          2,
          0,
          1,
          2,
          0,
          1
        ],
        "D": [
          2,
          1,
          2,
          1
        ],
        "E": [
          1,
          0,
          2,
          0
        ],
        "F": [
          2,
          3,
          3,
          2,
          3
        ],
        "G": [
          3,
          2,
          2,
          3
        ],
        "H": [
          3,
          3,
          3,
          1,
          1
        ],
        "I": [
          1,
          2,
          1,
          2
        ],
        "J": [
          3,
          3,
          2,
          1
        ],
        "K": [
          3,
          0,
          2
        ]
      },
      "evidence_urls": {
        "A": [
          "https://support.chess.com/en/articles/8724749-what-is-practice-on-chess-com",
          "https://www.chess.com/terms/game-review",
          "https://support.chess.com/en/articles/8708925-what-is-insights-on-chess-com",
          "https://support.chess.com/en/articles/16243840-what-are-skills-on-chess-com",
          "https://support.chess.com/en/articles/8562418-what-does-each-level-of-premium-membership-get-me",
          "https://support.chess.com/en/articles/8584089-how-does-game-review-work",
          "https://support.chess.com/en/articles/8708925-what-is-insights-on-chess-com",
          "https://support.chess.com/en/articles/8708925-what-is-insights-on-chess-com"
        ],
        "B": [
          "https://support.chess.com/en/articles/8724749-what-is-practice-on-chess-com",
          "https://support.chess.com/en/articles/8724749-what-is-practice-on-chess-com",
          "https://support.chess.com/en/articles/8705347-how-can-i-see-my-opening-stats",
          "https://support.chess.com/en/articles/8615183-what-is-the-game-explorer",
          "https://www.chess.com/openings",
          "https://www.chess.com/openings"
        ],
        "C": [
          "https://support.chess.com/en/articles/8584089-how-does-game-review-work",
          "https://www.chess.com/puzzles",
          "https://support.chess.com/en/articles/8708978-how-do-i-practice-endgames",
          "https://www.chess.com/lessons",
          "https://support.chess.com/en/articles/8708983-how-are-the-next-puzzles-chosen-for-me-when-i-am-training",
          "https://support.chess.com/en/articles/8615408-what-is-vision",
          "https://support.chess.com/en/articles/12488563-why-did-my-puzzle-rating-change",
          "https://support.chess.com/en/articles/8708983-how-are-the-next-puzzles-chosen-for-me-when-i-am-training",
          "https://support.chess.com/en/articles/8709046-what-is-a-study-plan-on-chess-com"
        ],
        "D": [
          "https://support.chess.com/en/articles/8562418-what-does-each-level-of-premium-membership-get-me",
          "https://www.chess.com/membership",
          "https://www.chess.com/legal/subscriber",
          "https://support.chess.com/en/articles/8562418-what-does-each-level-of-premium-membership-get-me"
        ],
        "E": [
          "https://www.chess.com/membership",
          "https://support.chess.com/en/articles/8584089-how-does-game-review-work",
          "https://support.chess.com/en/articles/8648809-what-computer-am-i-playing-against",
          "https://www.chess.com/membership"
        ],
        "F": [
          "https://www.chess.com/lessons",
          "https://www.chess.com/lessons",
          "https://www.chess.com/lessons",
          "https://support.chess.com/en/articles/8709046-what-is-a-study-plan-on-chess-com",
          "https://apps.apple.com/de/app/chess-play-and-learn/id329218549"
        ],
        "G": [
          "https://www.chess.com/about",
          "https://support.chess.com/en/articles/8648809-what-computer-am-i-playing-against",
          "https://support.chess.com/en/articles/8724749-what-is-practice-on-chess-com",
          "https://www.chess.com/leagues"
        ],
        "H": [
          "https://apps.apple.com/ca/app/chess-play-and-learn/id329218549",
          "https://apps.apple.com/ca/app/chess-play-and-learn/id329218549",
          "https://www.chess.com/settings",
          "https://www.chess.com/blog/CHESScom/screen-reader-now-compatible-with-core-chess-com-pages",
          "https://www.chess.com/status"
        ],
        "I": [
          "https://www.chess.com/games/archive/hikaru",
          "https://support.chess.com/en/articles/8618597-how-do-i-save-an-analysis",
          "https://support.chess.com/en/?q=scan",
          "https://support.chess.com/en/articles/8598090-how-do-i-view-my-own-games"
        ],
        "J": [
          "https://support.chess.com/en/articles/8648287-how-do-i-find-or-become-a-chess-coach",
          "https://www.chess.com/clubs",
          "https://support.chess.com/en/articles/8708915-how-do-i-use-classroom-on-chess-com",
          "https://www.chess.com/membership"
        ],
        "K": [
          "https://support.chess.com/en/articles/8705305-how-do-i-get-my-pgn-of-my-game",
          "https://www.chess.com/legal/privacy",
          "https://www.chess.com/news/view/published-data-api"
        ]
      },
      "sources": [
        "https://www.chess.com/about",
        "https://en.wikipedia.org/wiki/Chess.com",
        "https://www.chess.com/legal/privacy",
        "https://support.chess.com/en/articles/8562418-what-does-each-level-of-premium-membership-get-me",
        "https://www.chess.com/news/view/published-data-api"
      ],
      "review_url": "https://www.chesspivot.com/en/reviews/chess-com",
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 3.22,
        "criteria": [
          {
            "code": "A1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://support.chess.com/en/articles/8609242-why-should-i-become-a-member-at-chess-com-does-it-cost-anything",
            "note_fr": "Les parties jouées sur place (jeu gratuit illimité) sont archivées ; le statut gratuit du collage FEN/PGN externe n'est pas publié."
          },
          {
            "code": "A2",
            "status": "quota-symbolic",
            "quota": "« 1 full game review analysis per day »",
            "source_url": "https://support.chess.com/en/articles/8562418-what-does-each-level-of-premium-membership-get-me",
            "note_fr": "Illimité seulement à partir de Platinum."
          },
          {
            "code": "A3",
            "status": "paid",
            "quota": null,
            "source_url": "https://support.chess.com/en/articles/8708925-what-is-insights-on-chess-com",
            "note_fr": "« This feature is a powerful tool available to Diamond members » — Insights réservé à Diamond."
          },
          {
            "code": "A4",
            "status": "undocumented",
            "quota": null,
            "source_url": "https://support.chess.com/en/articles/16243840-what-are-skills-on-chess-com",
            "note_fr": "L'article Skills ne précise aucun niveau d'abonnement requis ni gratuité."
          },
          {
            "code": "A5",
            "status": "paid",
            "quota": null,
            "source_url": "https://support.chess.com/en/articles/8562418-what-does-each-level-of-premium-membership-get-me",
            "note_fr": "« coach explanations on all of your moves » listé sous Diamond."
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A7",
            "status": "paid",
            "quota": null,
            "source_url": "https://support.chess.com/en/articles/8708925-what-is-insights-on-chess-com",
            "note_fr": "Past Performance vit dans Insights, réservé à Diamond."
          },
          {
            "code": "A8",
            "status": "paid",
            "quota": null,
            "source_url": "https://support.chess.com/en/articles/8708925-what-is-insights-on-chess-com",
            "note_fr": "Similar Players vit dans Insights, réservé à Diamond."
          },
          {
            "code": "B1",
            "status": "undocumented",
            "quota": null,
            "source_url": "https://support.chess.com/en/articles/8724749-what-is-practice-on-chess-com",
            "note_fr": "L'article Practice (Openings) ne précise aucun niveau d'abonnement."
          },
          {
            "code": "B2",
            "status": "undocumented",
            "quota": null,
            "source_url": "https://support.chess.com/en/articles/8724749-what-is-practice-on-chess-com",
            "note_fr": "Même constat que B1 ; 8609242 ne cite qu'un « limited access to some of our amazing learning tools » sans chiffre."
          },
          {
            "code": "B3",
            "status": "undocumented",
            "quota": null,
            "source_url": "https://support.chess.com/en/articles/8705347-how-can-i-see-my-opening-stats",
            "note_fr": "Statut gratuit des stats d'ouverture non précisé."
          },
          {
            "code": "B4",
            "status": "quota-symbolic",
            "quota": "Explorer gratuit limité à « the first 4 moves of any opening »",
            "source_url": "https://support.chess.com/en/articles/8562418-what-does-each-level-of-premium-membership-get-me",
            "note_fr": "Profondeur libre à partir de Gold."
          },
          {
            "code": "B5",
            "status": "quota-symbolic",
            "quota": "« the first 4 moves of any opening »",
            "source_url": "https://support.chess.com/en/articles/8562418-what-does-each-level-of-premium-membership-get-me",
            "note_fr": "4 coups de profondeur : symbolique pour un explorateur."
          },
          {
            "code": "B6",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chess.com/openings",
            "note_fr": "Pages d'ouvertures publiques (les leçons liées, elles, sont limitées en gratuit)."
          },
          {
            "code": "C1",
            "status": "quota-symbolic",
            "quota": "« 1 full game review analysis per day »",
            "source_url": "https://support.chess.com/en/articles/8562418-what-does-each-level-of-premium-membership-get-me",
            "note_fr": "Le « Retry » d'un coup raté vit dans Game Review (1/jour en gratuit)."
          },
          {
            "code": "C2",
            "status": "quota-symbolic",
            "quota": "Puzzles : « 3 per day »",
            "source_url": "https://support.chess.com/en/articles/8562418-what-does-each-level-of-premium-membership-get-me",
            "note_fr": "« UNLIMITED puzzles » à partir de Gold ; Puzzle Rush/Battle : 1/jour chacun après le 1er jour."
          },
          {
            "code": "C3",
            "status": "quota-symbolic",
            "quota": "Endgames : accès à « the first position in each section »",
            "source_url": "https://support.chess.com/en/articles/8562418-what-does-each-level-of-premium-membership-get-me",
            "note_fr": "« All Endgames positions unlocked » à partir de Gold."
          },
          {
            "code": "C4",
            "status": "quota-symbolic",
            "quota": "Lessons : « One additional lesson of choice daily » (+ section « New to Chess » gratuite)",
            "source_url": "https://support.chess.com/en/articles/8562418-what-does-each-level-of-premium-membership-get-me",
            "note_fr": "« UNLIMITED access to all lessons » à partir de Gold."
          },
          {
            "code": "C5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C6",
            "status": "undocumented",
            "quota": null,
            "source_url": "https://support.chess.com/en/articles/8615408-what-is-vision",
            "note_fr": "L'article Vision ne précise aucun niveau d'abonnement ni limite."
          },
          {
            "code": "C7",
            "status": "quota-symbolic",
            "quota": "Puzzles : « 3 per day »",
            "source_url": "https://support.chess.com/en/articles/8562418-what-does-each-level-of-premium-membership-get-me",
            "note_fr": "La cote Glicko s'applique, mais sur 3 puzzles/jour en gratuit."
          },
          {
            "code": "C8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C9",
            "status": "undocumented",
            "quota": null,
            "source_url": "https://support.chess.com/en/articles/8709046-what-is-a-study-plan-on-chess-com",
            "note_fr": "Statut gratuit des Study Plans non précisé (leur contenu renvoie aux leçons, limitées en gratuit)."
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://support.chess.com/en/articles/8562418-what-does-each-level-of-premium-membership-get-me",
            "note_fr": "Article public détaillant le gratuit."
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chess.com/membership",
            "note_fr": "Prix publics."
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chess.com/legal/subscriber",
            "note_fr": "Conditions publiques."
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://support.chess.com/en/articles/8562418-what-does-each-level-of-premium-membership-get-me",
            "note_fr": "3 paliers, information publique."
          },
          {
            "code": "E1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chess.com/membership",
            "note_fr": "Affirmation publique (« 2.7X ») — visible par tous."
          },
          {
            "code": "E2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://support.chess.com/en/articles/8648809-what-computer-am-i-playing-against",
            "note_fr": "Documentation publique."
          },
          {
            "code": "E4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F1",
            "status": "quota-symbolic",
            "quota": "« One additional lesson of choice daily »",
            "source_url": "https://support.chess.com/en/articles/8562418-what-does-each-level-of-premium-membership-get-me",
            "note_fr": "Cours par niveau accessibles à raison d'une leçon/jour en gratuit."
          },
          {
            "code": "F2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chess.com/lessons",
            "note_fr": "Auteurs visibles publiquement."
          },
          {
            "code": "F3",
            "status": "quota-symbolic",
            "quota": "« One additional lesson of choice daily »",
            "source_url": "https://support.chess.com/en/articles/8562418-what-does-each-level-of-premium-membership-get-me",
            "note_fr": "Les formats (vidéo+texte+défis) passent par les leçons, 1/jour en gratuit."
          },
          {
            "code": "F4",
            "status": "undocumented",
            "quota": null,
            "source_url": "https://support.chess.com/en/articles/8709046-what-is-a-study-plan-on-chess-com",
            "note_fr": "Statut gratuit des Study Plans non précisé."
          },
          {
            "code": "F5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/de/app/chess-play-and-learn/id329218549",
            "note_fr": "Mises à jour visibles par tous."
          },
          {
            "code": "G1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://support.chess.com/en/articles/8609242-why-should-i-become-a-member-at-chess-com-does-it-cost-anything",
            "note_fr": "« Play unlimited correspondence-style and real-time chess, including blitz and bullet games »."
          },
          {
            "code": "G2",
            "status": "quota-real",
            "quota": "Gratuit : « choose from 20+ distinct personalities » ; « Access all 100+ computer personalities » à partir de Gold",
            "source_url": "https://support.chess.com/en/articles/8562418-what-does-each-level-of-premium-membership-get-me",
            "note_fr": "Parties illimitées contre les 20+ bots gratuits ; la sélection complète est payante."
          },
          {
            "code": "G3",
            "status": "undocumented",
            "quota": null,
            "source_url": "https://support.chess.com/en/articles/8724749-what-is-practice-on-chess-com",
            "note_fr": "Custom Position (Practice) sans niveau d'abonnement précisé."
          },
          {
            "code": "G4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://support.chess.com/en/articles/8653083-how-do-membership-levels-free-vs-premium-affect-access-to-daily-tournaments",
            "note_fr": "Tournois officiels : accès « Unlimited » en gratuit ; limite : 1 seul tournoi créé par des membres à la fois, création impossible (0)."
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/ca/app/chess-play-and-learn/id329218549",
            "note_fr": "Apps et web gratuits (avec publicité en gratuit)."
          },
          {
            "code": "H2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/ca/app/chess-play-and-learn/id329218549",
            "note_fr": "Avis publics."
          },
          {
            "code": "H3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chess.com/settings",
            "note_fr": "Sélecteur de langue pour tous."
          },
          {
            "code": "H4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chess.com/blog/CHESScom/screen-reader-now-compatible-with-core-chess-com-pages",
            "note_fr": "Compatibilité lecteur d'écran non conditionnée à un abonnement."
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chess.com/status",
            "note_fr": "Information publique."
          },
          {
            "code": "I1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chess.com/games/archive/hikaru",
            "note_fr": "Archives publiques d'un joueur nommé, consultables sans abonnement."
          },
          {
            "code": "I2",
            "status": "undocumented",
            "quota": null,
            "source_url": "https://support.chess.com/en/articles/8618597-how-do-i-save-an-analysis",
            "note_fr": "L'article n'indique pas de limite gratuite au nombre d'analyses sauvegardées/partageables."
          },
          {
            "code": "I3",
            "status": "undocumented",
            "quota": null,
            "source_url": "https://support.chess.com/en/articles/8724749-what-is-practice-on-chess-com",
            "note_fr": "Saisie manuelle sur l'échiquier d'analyse : statut gratuit non publié."
          },
          {
            "code": "I4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://support.chess.com/en/articles/8598090-how-do-i-view-my-own-games",
            "note_fr": "Filtres de l'archive décrits sans condition d'abonnement ; l'archive fait partie du jeu gratuit."
          },
          {
            "code": "J1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://support.chess.com/en/articles/8648287-how-do-i-find-or-become-a-chess-coach",
            "note_fr": "Annuaire gratuit ; les leçons se paient au coach."
          },
          {
            "code": "J2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chess.com/clubs",
            "note_fr": "Clubs et forums ouverts aux comptes gratuits."
          },
          {
            "code": "J3",
            "status": "undocumented",
            "quota": null,
            "source_url": "https://support.chess.com/en/articles/8708915-how-do-i-use-classroom-on-chess-com",
            "note_fr": "L'article Classroom ne précise aucun niveau d'abonnement."
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chess.com/membership",
            "note_fr": "Mécaniques (ligues, pubs, upsell) présentes en gratuit."
          },
          {
            "code": "K1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://support.chess.com/en/articles/8705305-how-do-i-get-my-pgn-of-my-game",
            "note_fr": "PGN en lot + export libre-service (chess.com/my-data) sans condition d'abonnement mentionnée."
          },
          {
            "code": "K2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "K3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chess.com/news/view/published-data-api",
            "note_fr": "API publique documentée, sans clé."
          }
        ]
      }
    },
    {
      "slug": "chesstempo",
      "name": "ChessTempo",
      "url": "https://chesstempo.com/",
      "kind": "platform",
      "type": {
        "en": "tactics and openings training platform",
        "fr": "plateforme d’entraînement tactique et ouvertures"
      },
      "price": {
        "en": "Diamond €82.80/yr incl. VAT (€69 excl. + 20% VAT; Gold €37.20 incl., Silver €20.70 incl.) — read by hand on /memberships/, 2026-09-01.",
        "fr": "Diamant 82,80 €/an TTC (69 € HT + 20 % de TVA ; Or 37,20 € TTC, Argent 20,70 € TTC) — relevé à la main sur /memberships/ le 01/09/2026."
      },
      "languages": 8,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 5.08,
      "unweighted_score": 4.8,
      "category_scores": {
        "A": 3.3,
        "B": 8.3,
        "C": 5.9,
        "D": 4.2,
        "E": 4.2,
        "F": 4.7,
        "G": 2.5,
        "H": 5.3,
        "I": 6.7,
        "J": 3.3,
        "K": 4.4
      },
      "scores": {
        "A": [
          1,
          2,
          1,
          1,
          1,
          0,
          1,
          1
        ],
        "B": [
          3,
          2,
          3,
          3,
          3,
          1
        ],
        "C": [
          2,
          3,
          2,
          2,
          2,
          0,
          2,
          2,
          1
        ],
        "D": [
          2,
          1,
          1,
          1
        ],
        "E": [
          0,
          1,
          2,
          2
        ],
        "F": [
          1,
          3,
          2,
          0,
          1
        ],
        "G": [
          1,
          1,
          1,
          0
        ],
        "H": [
          3,
          1,
          2,
          1,
          1
        ],
        "I": [
          2,
          2,
          1,
          3
        ],
        "J": [
          0,
          1,
          1,
          2
        ],
        "K": [
          2,
          1,
          1
        ]
      },
      "evidence_urls": {
        "A": [
          "https://chesstempo.com/mobile",
          "https://chesstempo.com/mobile",
          "https://chesstempo.com/mobile",
          "https://chesstempo.com/mobile",
          "https://chesstempo.com/manual/en/manual.html",
          "https://chesstempo.com/mobile",
          "https://chesstempo.com/mobile",
          "https://chesstempo.com/leaderboards/"
        ],
        "B": [
          "https://chesstempo.com/opening-training/",
          "https://chesstempo.com/mobile",
          "https://chesstempo.com/opening-training/",
          "https://chesstempo.com/manual/en/manual.html",
          "https://chesstempo.com/manual/en/manual.html",
          "https://chesstempo.com/game-database/chess-openings/"
        ],
        "C": [
          "https://chesstempo.com/mobile",
          "https://chesstempo.com/",
          "https://chesstempo.com/chess-endgames/",
          "https://chesstempo.com/mobile",
          "https://chesstempo.com/mobile",
          "https://chesstempo.com/",
          "https://chesstempo.com/manual/en/manual.html",
          "https://chesstempo.com/manual/en/manual.html",
          "https://chesstempo.com/mobile"
        ],
        "D": [
          "https://chesstempo.com/mobile",
          "https://chesstempo.com/memberships/",
          "https://chesstempo.com/tos",
          "https://chesstempo.com/mobile"
        ],
        "E": [
          "https://chesstempo.com/",
          "https://chesstempo.com/commenting-guidelines",
          "https://chesstempo.com/manual/en/manual.html",
          "https://chesstempo.com/"
        ],
        "F": [
          "https://chesstempo.com/chess-books/",
          "https://chesstempo.com/",
          "https://chesstempo.com/chess-books/",
          "https://chesstempo.com/",
          "https://chesstempo.com/blog/"
        ],
        "G": [
          "https://chesstempo.com/play-chess-online/",
          "https://chesstempo.com/play-chess-online/",
          "https://chesstempo.com/mobile",
          "https://chesstempo.com/play-chess-online/"
        ],
        "H": [
          "https://chesstempo.com/mobile",
          "https://chesstempo.com",
          "https://chesstempo.com/",
          "https://chesstempo.com/play-chess-online/"
        ],
        "I": [
          "https://chesstempo.com/manual/en/manual.html",
          "https://chesstempo.com/manual/en/manual.html",
          "https://chesstempo.com/mobile",
          "https://chesstempo.com/manual/en/manual.html"
        ],
        "J": [
          "https://chesstempo.com/",
          "https://chesstempo.com/forum/",
          "https://chesstempo.com/memberships/",
          "https://chesstempo.com/"
        ],
        "K": [
          "https://chesstempo.com/mobile",
          "https://chesstempo.com/privacy",
          "https://chesstempo.com/mobile"
        ]
      },
      "sources": [
        "https://chesstempo.com/",
        "https://chesstempo.com/blog/",
        "https://chesstempo.com/blog.atom",
        "https://apps.apple.com/us/app/chess-tempo-chess-tactics/id1441878094",
        "https://play.google.com/store/apps/details?id=com.chesstempo.mobile",
        "https://chesstempo.com/privacy"
      ],
      "review_url": "https://www.chesspivot.com/en/reviews/chesstempo",
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 3.76,
        "criteria": [
          {
            "code": "A1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesstempo.com/mobile",
            "note_fr": "Parties jouées sur CT analysées gratuitement ; « Import repertoires from PGN » gratuit ; pas de connexion Chess.com/Lichess."
          },
          {
            "code": "A2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesstempo.com/mobile",
            "note_fr": "« Get a full post game analysis after every rated game played » — listé dans les fonctions de jeu sans marque premium."
          },
          {
            "code": "A3",
            "status": "paid",
            "quota": null,
            "source_url": "https://chesstempo.com/mobile",
            "note_fr": "« For premium members … Sets that target your previous mistakes »."
          },
          {
            "code": "A4",
            "status": "paid",
            "quota": null,
            "source_url": "https://chesstempo.com/mobile",
            "note_fr": "« For premium members … Sets that target a particular tactical motif such as pin, fork, discovered attack etc. »"
          },
          {
            "code": "A5",
            "status": "paid",
            "quota": null,
            "source_url": "https://chesstempo.com/mobile",
            "note_fr": "« Analyse positions using our cloud engines (requires premium membership) » ; l'analyse gratuite d'après partie n'a que des étiquettes, pas de texte."
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A7",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesstempo.com/mobile",
            "note_fr": "« Graphs showing repertoire learning status and learning history over time » — section opening training sans marque premium."
          },
          {
            "code": "A8",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesstempo.com/leaderboards/",
            "note_fr": "Classements publics."
          },
          {
            "code": "B1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesstempo.com/mobile",
            "note_fr": "« Create multiple black and white repertoires. Import repertoires from PGN » — sans marque premium ; seul l'explorateur est borné (10 coups en gratuit)."
          },
          {
            "code": "B2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesstempo.com/mobile",
            "note_fr": "« Train your repertoires using spaced repetition » — section opening training sans marque premium (les sets SRS de TACTIQUE, eux, sont premium)."
          },
          {
            "code": "B3",
            "status": "undocumented",
            "quota": null,
            "source_url": "https://chesstempo.com/opening-training/",
            "note_fr": "La détection de déviation est annoncée mais son statut gratuit/premium n'est établi nulle part (page /mobile muette)."
          },
          {
            "code": "B4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesstempo.com/manual/en/manual.html",
            "note_fr": "Protocole (Stockfish prof. 25/50) publié — propriété du contenu, indépendante du plan."
          },
          {
            "code": "B5",
            "status": "quota-real",
            "quota": "« Use the opening explorer to choose moves for your repertoire (limited to a depth of 10 moves for free members) »",
            "source_url": "https://chesstempo.com/mobile",
            "note_fr": "10 coups de profondeur : usage réel quotidien possible, profondeur bornée."
          },
          {
            "code": "B6",
            "status": "paid",
            "quota": null,
            "source_url": "https://chesstempo.com/chess-books/",
            "note_fr": "Les idées/plans vivent dans les e-books vendus à l'unité ; les pages publiques de la base ne donnent que noms et coups."
          },
          {
            "code": "C1",
            "status": "paid",
            "quota": null,
            "source_url": "https://chesstempo.com/mobile",
            "note_fr": "« For premium members, have tactics problems extracted from your rated games »."
          },
          {
            "code": "C2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesstempo.com/mobile",
            "note_fr": "Tactiques gratuites (« over 100,000 puzzles available » sur l'app, 350k+ sur le site), sans quota publié."
          },
          {
            "code": "C3",
            "status": "quota-symbolic",
            "quota": "« 2 positions per day for free members » — premium : « More positions available per day »",
            "source_url": "https://chesstempo.com/mobile",
            "note_fr": "2/jour : sous la frontière des 5 usages/jour."
          },
          {
            "code": "C4",
            "status": "quota-symbolic",
            "quota": "« non-paying members get two free Guess The Move games to sample »",
            "source_url": "https://chesstempo.com/guess-the-move/",
            "note_fr": "2 parties d'essai AU TOTAL (pas par jour) ; les sets par motif positionnel sont premium."
          },
          {
            "code": "C5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesstempo.com/mobile",
            "note_fr": "« Includes both winning and defensive problem types » — dans la tactique gratuite."
          },
          {
            "code": "C6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C7",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesstempo.com/manual/en/manual.html",
            "note_fr": "Cotes Glicko appliquées à la résolution gratuite."
          },
          {
            "code": "C8",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesstempo.com/mobile",
            "note_fr": "SRS du répertoire gratuit (« Train your repertoires using spaced repetition ») ; les sets SRS tactiques personnalisés sont premium."
          },
          {
            "code": "C9",
            "status": "undocumented",
            "quota": null,
            "source_url": "https://chesstempo.com/mobile",
            "note_fr": "Training Targets : statut gratuit/premium non publié."
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesstempo.com/mobile",
            "note_fr": "Répartition gratuit/premium documentée publiquement."
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesstempo.com/memberships/",
            "note_fr": "Prix publics."
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesstempo.com/tos",
            "note_fr": "Conditions publiques."
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesstempo.com/memberships/",
            "note_fr": "Information publique (3 paliers + e-books à l'unité)."
          },
          {
            "code": "E1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesstempo.com/commenting-guidelines",
            "note_fr": "Commentaires/signalements ouverts aux comptes gratuits."
          },
          {
            "code": "E3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesstempo.com/manual/en/manual.html",
            "note_fr": "Manuel public."
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesstempo.com/",
            "note_fr": "Discours public."
          },
          {
            "code": "F1",
            "status": "paid",
            "quota": null,
            "source_url": "https://chesstempo.com/chess-books/",
            "note_fr": "Les cours = e-books vendus à l'unité (17,99–43,44 $)."
          },
          {
            "code": "F2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesstempo.com/",
            "note_fr": "Auteurs visibles publiquement."
          },
          {
            "code": "F3",
            "status": "paid",
            "quota": null,
            "source_url": "https://chesstempo.com/chess-books/",
            "note_fr": "Le contenu de cours (e-books interactifs) est payant à l'unité."
          },
          {
            "code": "F4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesstempo.com/blog/",
            "note_fr": "Blog public."
          },
          {
            "code": "G1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesstempo.com/mobile",
            "note_fr": "« Play chess against other Chesstempo users » (live + correspondance) — « Free chess training and online playing features are provided »."
          },
          {
            "code": "G2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesstempo.com/play-chess-online/",
            "note_fr": "« computer opponents » accessibles avec un compte gratuit."
          },
          {
            "code": "G3",
            "status": "undocumented",
            "quota": null,
            "source_url": "https://chesstempo.com/mobile",
            "note_fr": "Mise en place FEN gratuite, mais rejouer une position CONTRE le moteur n'est pas documenté (le moteur cloud d'analyse est premium)."
          },
          {
            "code": "G4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesstempo.com/mobile",
            "note_fr": "« The app is free. » — iOS, Android et web."
          },
          {
            "code": "H2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/chess-tempo-chess-tactics/id1441878094",
            "note_fr": "Avis publics."
          },
          {
            "code": "H3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesstempo.com/mobile",
            "note_fr": "13 langues au sélecteur, pour tous."
          },
          {
            "code": "H4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesstempo.com/",
            "note_fr": "Raccourcis clavier et thèmes pour tous."
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesstempo.com/play-chess-online/",
            "note_fr": "Information publique (dépendance serveur)."
          },
          {
            "code": "I1",
            "status": "undocumented",
            "quota": null,
            "source_url": "https://chesstempo.com/manual/en/manual.html",
            "note_fr": "Pages joueur de la base documentées, mais leurs limites pour comptes gratuits ne sont pas publiées."
          },
          {
            "code": "I2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesstempo.com/mobile",
            "note_fr": "« Comment on each position or move… Export repertoire and your comments and annotations to PGN » — sans marque premium."
          },
          {
            "code": "I3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesstempo.com/mobile",
            "note_fr": "« Setup positions from FEN or by arranging the pieces on the board with the board editor » — sans marque premium."
          },
          {
            "code": "I4",
            "status": "undocumented",
            "quota": null,
            "source_url": "https://chesstempo.com/manual/en/manual.html",
            "note_fr": "Recherche par position documentée dans le manuel, sans statut gratuit/premium publié."
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesstempo.com/forum/",
            "note_fr": "Forum ouvert."
          },
          {
            "code": "J3",
            "status": "paid",
            "quota": null,
            "source_url": "https://chesstempo.com/memberships/",
            "note_fr": "Seule offre pour groupes : « group discounts » sur des abonnements payants."
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesstempo.com/",
            "note_fr": "Streaks/classements accessibles en gratuit."
          },
          {
            "code": "K1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesstempo.com/mobile",
            "note_fr": "« Export repertoire and your comments and annotations to PGN » — sans marque premium."
          },
          {
            "code": "K2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesstempo.com/privacy",
            "note_fr": "Identique pour tous les comptes."
          },
          {
            "code": "K3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesstempo.com/widgets/",
            "note_fr": "Widgets publics ; import/export PGN gratuit ; pas d'API documentée."
          }
        ]
      }
    },
    {
      "slug": "chessmind-ai",
      "name": "ChessMind AI",
      "url": "https://chessmind.ai",
      "kind": "platform",
      "type": {
        "en": "AI coach: Maia, scan, opening courses",
        "fr": "Coach IA : Maia, scan, cours d’ouvertures"
      },
      "price": {
        "en": "$69.99/yr ≈ €64 (annual price shown by the plans API: monthly $9.99, annual $69.99, lifetime $229.99; $1 ≈ €0.92)",
        "fr": "69,99 $/an ≈ 64 € (annuel affiché par l’API de plans : mensuel 9,99 $, annuel 69,99 $, à vie 229,99 $ ; 1 $ ≈ 0,92 €)"
      },
      "languages": 12,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 4.71,
      "unweighted_score": 4.1,
      "category_scores": {
        "A": 3.8,
        "B": 3.9,
        "C": 5.9,
        "D": 6.7,
        "E": 3.3,
        "F": 7.3,
        "G": 2.5,
        "H": 5.3,
        "I": 1.7,
        "J": 2.5,
        "K": 2.2
      },
      "scores": {
        "A": [
          1,
          2,
          2,
          2,
          2,
          0,
          0,
          0
        ],
        "B": [
          1,
          2,
          1,
          1,
          0,
          2
        ],
        "C": [
          2,
          1,
          2,
          2,
          2,
          2,
          1,
          2,
          2
        ],
        "D": [
          2,
          2,
          1,
          3
        ],
        "E": [
          0,
          0,
          2,
          2
        ],
        "F": [
          2,
          2,
          3,
          2,
          2
        ],
        "G": [
          0,
          2,
          1,
          0
        ],
        "H": [
          3,
          2,
          2,
          0,
          1
        ],
        "I": [
          0,
          1,
          1,
          0
        ],
        "J": [
          0,
          1,
          0,
          2
        ],
        "K": [
          0,
          1,
          1
        ]
      },
      "evidence_urls": {
        "A": [
          "https://chessmind.ai",
          "https://chessmind.ai",
          "https://chessmind.ai/scan",
          "https://chessmind.ai/scan",
          "https://chessmind.ai",
          "https://chessmind.ai",
          "https://chessmind.ai",
          "https://chessmind.ai"
        ],
        "B": [
          "https://chessmind.ai",
          "https://chessmind.ai",
          "https://chessmind.ai",
          "https://chessmind.ai",
          "https://chessmind.ai",
          "https://chessmind.ai"
        ],
        "C": [
          "https://chessmind.ai",
          "https://chessmind.ai/sitemap-core.xml",
          "https://chessmind.ai/sitemap-core.xml",
          "https://chessmind.ai/sitemap-core.xml",
          "https://chessmind.ai/sitemap-core.xml",
          "https://chessmind.ai/sitemap-core.xml",
          "https://chessmind.ai",
          "https://chessmind.ai",
          "https://chessmind.ai/scan"
        ],
        "D": [
          "https://chessmind.ai",
          "https://api.chessmind.ai/api/subscription/plans/",
          "https://apps.apple.com/us/app/chessmind-ai/id6739585822",
          "https://api.chessmind.ai/api/subscription/plans/"
        ],
        "E": [
          "https://chessmind.ai",
          "https://chessmind.ai",
          "https://chessmind.ai",
          "https://chessmind.ai"
        ],
        "F": [
          "https://chessmind.ai/sitemap-core.xml",
          "https://chessmind.ai",
          "https://api.chessmind.ai/api/video-courses/",
          "https://chessmind.ai",
          "https://apps.apple.com/us/app/chessmind-ai/id6739585822"
        ],
        "G": [
          "https://chessmind.ai",
          "https://chessmind.ai",
          "https://chessmind.ai",
          "https://chessmind.ai"
        ],
        "H": [
          "https://chessmind.ai",
          "https://apps.apple.com/us/app/chessmind-ai/id6739585822",
          "https://chessmind.ai",
          "https://apps.apple.com/us/app/chessmind-ai/id6739585822"
        ],
        "I": [
          "https://chessmind.ai",
          "https://chessmind.ai",
          "https://chessmind.ai",
          "https://chessmind.ai/games"
        ],
        "J": [
          "https://chessmind.ai",
          "https://chessmind.ai",
          "https://chessmind.ai/academies",
          "https://apps.apple.com/us/app/chessmind-ai/id6739585822"
        ],
        "K": [
          "https://chessmind.ai",
          "https://chessmind.ai/privacypolicy",
          "https://chessmind.ai"
        ]
      },
      "sources": [
        "https://chessmind.ai/",
        "https://chessmind.ai/about",
        "https://chessmind.ai/scan",
        "https://apps.apple.com/us/app/chessmind-ai/id6739585822",
        "https://play.google.com/store/apps/details?id=com.chessmindai.chessmindaiapp",
        "https://chessmind.ai",
        "https://chessmind.ai/sitemap-core.xml",
        "https://chessmind.ai/games",
        "https://chessmind.ai/academies",
        "https://chessmind.ai/privacypolicy"
      ],
      "review_url": "https://www.chesspivot.com/en/reviews/chessmind-ai",
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 2.43,
        "criteria": [
          {
            "code": "A1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessmind.ai/",
            "note_fr": "« the game scan that diagnoses your strengths and weaknesses is free » — l'entrée des parties (collage) fait partie du scan gratuit ; pas d'import Chess.com/Lichess ni de quota publié."
          },
          {
            "code": "A2",
            "status": "undocumented",
            "quota": null,
            "source_url": "https://chessmind.ai/",
            "note_fr": "L'illimité est réservé à l'abonnement (« unlimited practice games ») ; la limite gratuite de revues partie-par-partie n'est chiffrée nulle part."
          },
          {
            "code": "A3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessmind.ai/scan",
            "note_fr": "Les Top Priorities sortent du scan, gratuit (« the game scan … is free »)."
          },
          {
            "code": "A4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessmind.ai/scan",
            "note_fr": "Les axes (finale, tactique, structure, ouverture) sont ceux du scan gratuit."
          },
          {
            "code": "A5",
            "status": "undocumented",
            "quota": null,
            "source_url": "https://chessmind.ai/",
            "note_fr": "Les explications coup par coup ne sont rattachées à aucun statut gratuit/payant sur les pages publiques."
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B1",
            "status": "paid",
            "quota": null,
            "source_url": "https://chessmind.ai/",
            "note_fr": "Les cours d'ouvertures relèvent des « complete courses » débloqués par l'abonnement."
          },
          {
            "code": "B2",
            "status": "paid",
            "quota": null,
            "source_url": "https://chessmind.ai/",
            "note_fr": "Le drill (« board practice against the AI ») vit dans les cours ; « unlimited practice games, complete courses » = abonnement."
          },
          {
            "code": "B3",
            "status": "undocumented",
            "quota": null,
            "source_url": "https://chessmind.ai/",
            "note_fr": "Statistique citée sans statut gratuit/payant."
          },
          {
            "code": "B4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessmind.ai/",
            "note_fr": "Affirmation publique (« authored with grandmaster input ») — propriété du contenu."
          },
          {
            "code": "B5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B6",
            "status": "paid",
            "quota": null,
            "source_url": "https://chessmind.ai/",
            "note_fr": "« main line, key ideas, typical plans » = contenu des cours, réservés à l'abonnement."
          },
          {
            "code": "C1",
            "status": "paid",
            "quota": null,
            "source_url": "https://chessmind.ai/",
            "note_fr": "L'abonnement débloque « unlimited practice games, complete courses and personalized study plans »."
          },
          {
            "code": "C2",
            "status": "undocumented",
            "quota": null,
            "source_url": "https://chessmind.ai/sitemap-core.xml",
            "note_fr": "Pages /puzzles et /puzzle-flash présentes ; aucun statut gratuit/payant publié."
          },
          {
            "code": "C3",
            "status": "undocumented",
            "quota": null,
            "source_url": "https://chessmind.ai/sitemap-core.xml",
            "note_fr": "/endgame-training présent ; statut gratuit non publié."
          },
          {
            "code": "C4",
            "status": "undocumented",
            "quota": null,
            "source_url": "https://chessmind.ai/sitemap-core.xml",
            "note_fr": "/positional-quiz présent ; statut gratuit non publié."
          },
          {
            "code": "C5",
            "status": "undocumented",
            "quota": null,
            "source_url": "https://chessmind.ai/sitemap-core.xml",
            "note_fr": "/visualization/hanging-pieces présent ; statut gratuit non publié."
          },
          {
            "code": "C6",
            "status": "undocumented",
            "quota": null,
            "source_url": "https://chessmind.ai/sitemap-core.xml",
            "note_fr": "Modules /visualization présents ; statut gratuit non publié."
          },
          {
            "code": "C7",
            "status": "undocumented",
            "quota": null,
            "source_url": "https://chessmind.ai/",
            "note_fr": "Six niveaux Maia, mais liés aux practice games dont le volume gratuit n'est pas publié."
          },
          {
            "code": "C8",
            "status": "undocumented",
            "quota": null,
            "source_url": "https://chessmind.ai/",
            "note_fr": "« spaced repetition » cité dans la méthode sans dire dans quel périmètre gratuit il s'applique."
          },
          {
            "code": "C9",
            "status": "paid",
            "quota": null,
            "source_url": "https://chessmind.ai/",
            "note_fr": "« personalized study plans » figurent dans ce que débloque l'abonnement."
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessmind.ai/",
            "note_fr": "FAQ publique."
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://api.chessmind.ai/api/subscription/plans/",
            "note_fr": "Prix publics via l'API de plans."
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/chessmind-ai/id6739585822",
            "note_fr": "Prix affichés sur la fiche store."
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://api.chessmind.ai/api/subscription/plans/",
            "note_fr": "Information publique."
          },
          {
            "code": "E1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessmind.ai/",
            "note_fr": "Maia et la répétition espacée nommés publiquement."
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessmind.ai/",
            "note_fr": "Discours public."
          },
          {
            "code": "F1",
            "status": "paid",
            "quota": null,
            "source_url": "https://chessmind.ai/",
            "note_fr": "Les cours sont réservés à l'abonnement."
          },
          {
            "code": "F2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessmind.ai/",
            "note_fr": "GM Mauricio Flores Rios nommé publiquement."
          },
          {
            "code": "F3",
            "status": "paid",
            "quota": null,
            "source_url": "https://chessmind.ai/",
            "note_fr": "Les formats (cours vidéo + guides + practice) relèvent des cours, réservés à l'abonnement."
          },
          {
            "code": "F4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessmind.ai/",
            "note_fr": "Méthode (« fix the weakest link first ») publiée publiquement."
          },
          {
            "code": "F5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/chessmind-ai/id6739585822",
            "note_fr": "Mises à jour visibles par tous."
          },
          {
            "code": "G1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G2",
            "status": "undocumented",
            "quota": null,
            "source_url": "https://chessmind.ai/",
            "note_fr": "Bots Maia documentés, « unlimited practice games » = abonnement ; le volume gratuit de parties n'est publié nulle part."
          },
          {
            "code": "G3",
            "status": "undocumented",
            "quota": null,
            "source_url": "https://chessmind.ai/",
            "note_fr": "Rejouer ses positions contre l'IA non démontré ni rattaché à un plan."
          },
          {
            "code": "G4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessmind.ai/",
            "note_fr": "Web, iOS, Android — accès aux apps gratuit."
          },
          {
            "code": "H2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/chessmind-ai/id6739585822",
            "note_fr": "Avis publics."
          },
          {
            "code": "H3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/chessmind-ai/id6739585822",
            "note_fr": "12 langues listées sur la fiche store."
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/chessmind-ai/id6739585822",
            "note_fr": "Information publique (avis)."
          },
          {
            "code": "I1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I2",
            "status": "undocumented",
            "quota": null,
            "source_url": "https://chessmind.ai/",
            "note_fr": "Ni variantes enregistrées ni partage documentés, statut gratuit inconnu."
          },
          {
            "code": "I3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessmind.ai/",
            "note_fr": "« Paste or play a game » — la saisie/collage fait partie du scan gratuit ; pas de photo/OCR."
          },
          {
            "code": "I4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessmind.ai/",
            "note_fr": "Réseaux sociaux publics."
          },
          {
            "code": "J3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/chessmind-ai/id6739585822",
            "note_fr": "« streak-sharing » décrit sans condition d'abonnement."
          },
          {
            "code": "K1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "K2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessmind.ai/privacypolicy",
            "note_fr": "Politique identique pour tous les comptes."
          },
          {
            "code": "K3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessmind.ai/",
            "note_fr": "Le seul mécanisme (collage PGN) est celui du scan gratuit ; pas d'API publique."
          }
        ]
      }
    },
    {
      "slug": "chessatlas",
      "name": "ChessAtlas",
      "url": "https://chessatlas.net",
      "kind": "platform",
      "type": {
        "en": "FSRS opening repertoire trainer",
        "fr": "entraîneur de répertoire d’ouvertures FSRS"
      },
      "price": {
        "en": "$83.88/yr (annual price shown on chessatlas.net/pricing, $6.99/mo ×12; App Store $83.99) ≈ €77 ($1 ≈ €0.92)",
        "fr": "83,88 $/an (annuel affiché sur chessatlas.net/pricing, 6,99 $/mois ×12 ; App Store 83,99 $) ≈ 77 € (1 $ ≈ 0,92 €)"
      },
      "languages": 2,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 4.66,
      "unweighted_score": 4.26,
      "category_scores": {
        "A": 3.3,
        "B": 7.2,
        "C": 2.6,
        "D": 6.7,
        "E": 6.7,
        "F": 4.7,
        "G": 0,
        "H": 4,
        "I": 3.3,
        "J": 1.7,
        "K": 6.7
      },
      "scores": {
        "A": [
          3,
          1,
          1,
          1,
          0,
          0,
          2,
          0
        ],
        "B": [
          3,
          2,
          3,
          2,
          1,
          2
        ],
        "C": [
          2,
          0,
          0,
          0,
          0,
          0,
          0,
          3,
          2
        ],
        "D": [
          2,
          1,
          2,
          3
        ],
        "E": [
          1,
          2,
          2,
          3
        ],
        "F": [
          1,
          1,
          2,
          0,
          3
        ],
        "G": [
          0,
          0,
          0,
          0
        ],
        "H": [
          3,
          1,
          1,
          0,
          1
        ],
        "I": [
          0,
          1,
          1,
          2
        ],
        "J": [
          0,
          0,
          0,
          2
        ],
        "K": [
          2,
          3,
          1
        ]
      },
      "evidence_urls": {
        "A": [
          "https://chessatlas.net/features/game-import",
          "https://chessatlas.net/features/opening-trainer",
          "https://chessatlas.net/features/game-import",
          "https://chessatlas.net/features/deviation-finder",
          "https://chessatlas.net/features/deviation-finder",
          "https://chessatlas.net/features/game-import",
          "https://chessatlas.net/features/game-import",
          "https://chessatlas.net/features/game-import"
        ],
        "B": [
          "https://chessatlas.net/features/repertoire-builder",
          "https://chessatlas.net/features/opening-trainer",
          "https://chessatlas.net/features/deviation-finder",
          "https://chessatlas.net/features/repertoire-builder",
          "https://chessatlas.net/features/game-import",
          "https://apps.apple.com/app/id6770867404"
        ],
        "C": [
          "https://chessatlas.net/features/deviation-finder",
          "https://chessatlas.net",
          "https://chessatlas.net",
          "https://chessatlas.net",
          "https://chessatlas.net",
          "https://chessatlas.net",
          "https://chessatlas.net/features/spaced-repetition",
          "https://chessatlas.net/features/spaced-repetition",
          "https://chessatlas.net/features/opening-trainer"
        ],
        "D": [
          "https://chessatlas.net/pricing",
          "https://chessatlas.net/pricing",
          "https://chessatlas.net/pricing",
          "https://chessatlas.net/pricing"
        ],
        "E": [
          "https://chessatlas.net/features/spaced-repetition",
          "https://chessatlas.net/editorial-policy",
          "https://chessatlas.net/about",
          "https://chessatlas.net/about"
        ],
        "F": [
          "https://chessatlas.net",
          "https://chessatlas.net/about",
          "https://chessatlas.net/blog",
          "https://chessatlas.net/about",
          "https://chessatlas.net/blog"
        ],
        "G": [
          "https://chessatlas.net",
          "https://chessatlas.net/features/opening-trainer",
          "https://chessatlas.net",
          "https://chessatlas.net"
        ],
        "H": [
          "https://chessatlas.net",
          "https://apps.apple.com/app/id6770867404",
          "https://chessatlas.net/fr",
          "https://chessatlas.net/fr",
          "https://chessatlas.net"
        ],
        "I": [
          "https://chessatlas.net/features/deviation-finder",
          "https://chessatlas.net/features/repertoire-builder",
          "https://chessatlas.net/features/repertoire-builder",
          "https://chessatlas.net/features/game-import"
        ],
        "J": [
          "https://chessatlas.net",
          "https://chessatlas.net",
          "https://chessatlas.net/pricing",
          "https://apps.apple.com/app/id6770867404"
        ],
        "K": [
          "https://chessatlas.net/features/repertoire-builder",
          "https://chessatlas.net/privacy",
          "https://chessatlas.net/features/repertoire-builder"
        ]
      },
      "sources": [
        "https://chessatlas.net/features/game-import",
        "https://Chess.com",
        "https://chessatlas.net/features/opening-trainer",
        "https://chessatlas.net/features/deviation-finder",
        "https://chessatlas.net/features/repertoire-builder",
        "https://chessatlas.net/editorial-policy",
        "https://apps.apple.com/app/id6770867404",
        "https://chessatlas.net/blog",
        "https://chessatlas.net",
        "https://chessatlas.net/pricing",
        "https://darksquares.net",
        "https://chessatlas.net/features/spaced-repetition",
        "https://chessatlas.net/about",
        "https://github.com/chessatlas",
        "https://app.chessatlas.net",
        "https://play.google.com",
        "https://net.chessatlas.app",
        "https://chessatlas.net/fr",
        "https://chessatlas.net/privacy",
        "https://chessatlas.net/blog/how-to-import-your-games-from-lichess-and-chesscom-into-chessatlas"
      ],
      "review_url": "https://www.chesspivot.com/en/reviews/chessatlas",
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 3.1,
        "criteria": [
          {
            "code": "A1",
            "status": "paid",
            "quota": null,
            "source_url": "https://chessatlas.net/pricing",
            "note_fr": "« Game import & analysis » figure dans la colonne Premium ; le plan gratuit ne l'inclut pas."
          },
          {
            "code": "A2",
            "status": "paid",
            "quota": null,
            "source_url": "https://chessatlas.net/pricing",
            "note_fr": "L'analyse des parties fait partie de « Game import & analysis » (Premium) ; seule la barre d'évaluation du trainer reste accessible."
          },
          {
            "code": "A3",
            "status": "paid",
            "quota": null,
            "source_url": "https://chessatlas.net/pricing",
            "note_fr": "Les win rates par ouverture supposent l'import de parties, réservé au Premium."
          },
          {
            "code": "A4",
            "status": "paid",
            "quota": null,
            "source_url": "https://chessatlas.net/pricing",
            "note_fr": "Le seul axe (déviation du répertoire) vit dans « Deviation detection », Premium."
          },
          {
            "code": "A5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A7",
            "status": "paid",
            "quota": null,
            "source_url": "https://chessatlas.net/pricing",
            "note_fr": "Le tableau de bord de tendances suppose l'import de parties (Premium)."
          },
          {
            "code": "A8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B1",
            "status": "quota-real",
            "quota": "Gratuit : « 200 variations », « 2 linked accounts » — Premium : « Unlimited variations »",
            "source_url": "https://chessatlas.net/pricing",
            "note_fr": "Constructeur de répertoire inclus en gratuit, borné à 200 variantes."
          },
          {
            "code": "B2",
            "status": "quota-real",
            "quota": "« 200 variations »",
            "source_url": "https://chessatlas.net/pricing",
            "note_fr": "Entraîneur + « Spaced repetition training » inclus en gratuit, dans la limite des 200 variantes."
          },
          {
            "code": "B3",
            "status": "paid",
            "quota": null,
            "source_url": "https://chessatlas.net/pricing",
            "note_fr": "« Deviation detection that shows exactly where your real games left your preparation » — colonne Premium."
          },
          {
            "code": "B4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessatlas.net/editorial-policy",
            "note_fr": "Politique éditoriale publique — propriété du contenu."
          },
          {
            "code": "B5",
            "status": "paid",
            "quota": null,
            "source_url": "https://chessatlas.net/pricing",
            "note_fr": "Les statistiques portent sur les parties importées, import réservé au Premium."
          },
          {
            "code": "B6",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessatlas.net/pricing",
            "note_fr": "« Course library access » inclus en gratuit ; blog public."
          },
          {
            "code": "C1",
            "status": "paid",
            "quota": null,
            "source_url": "https://chessatlas.net/pricing",
            "note_fr": "La file d'entraînement alimentée par les déviations dépend de « Deviation detection » (Premium)."
          },
          {
            "code": "C2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C8",
            "status": "quota-real",
            "quota": "« 200 variations »",
            "source_url": "https://chessatlas.net/pricing",
            "note_fr": "« Spaced repetition training » (FSRS) inclus en gratuit, portée bornée par les 200 variantes."
          },
          {
            "code": "C9",
            "status": "quota-real",
            "quota": "« 200 variations »",
            "source_url": "https://chessatlas.net/pricing",
            "note_fr": "File de cartes dues du trainer gratuit, bornée par le quota de variantes."
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessatlas.net/pricing",
            "note_fr": "Plan gratuit documenté publiquement (« a complete trainer, not a demo »)."
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessatlas.net/pricing",
            "note_fr": "Prix publics (« $6.99/mo », « $83.88 billed annually »)."
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessatlas.net/pricing",
            "note_fr": "Conditions publiques."
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessatlas.net/pricing",
            "note_fr": "Un seul palier Premium — information publique."
          },
          {
            "code": "E1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessatlas.net/features/spaced-repetition",
            "note_fr": "Affirmation publique (étude générale citée)."
          },
          {
            "code": "E2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessatlas.net/editorial-policy",
            "note_fr": "Publication publique."
          },
          {
            "code": "E3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessatlas.net/about",
            "note_fr": "FSRS nommé publiquement."
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessatlas.net/about",
            "note_fr": "Discours public."
          },
          {
            "code": "F1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessatlas.net/pricing",
            "note_fr": "« Course library access » inclus dans le plan gratuit."
          },
          {
            "code": "F2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessatlas.net/about",
            "note_fr": "Information publique."
          },
          {
            "code": "F3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessatlas.net/pricing",
            "note_fr": "Bibliothèque de cours gratuite + blog public + trainer gratuit."
          },
          {
            "code": "F4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessatlas.net/blog",
            "note_fr": "Blog public, mises à jour visibles."
          },
          {
            "code": "G1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessatlas.net/",
            "note_fr": "Web + iOS + Android accessibles gratuitement."
          },
          {
            "code": "H2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/app/id6770867404",
            "note_fr": "Avis publics."
          },
          {
            "code": "H3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessatlas.net/fr",
            "note_fr": "Interface FR/EN pour tous."
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessatlas.net/",
            "note_fr": "Information publique (pas de page statut)."
          },
          {
            "code": "I1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I2",
            "status": "quota-real",
            "quota": "« 200 variations » (plan gratuit, /pricing)",
            "source_url": "https://chessatlas.net/features/repertoire-builder",
            "note_fr": "« Add notes to any position » dans le constructeur gratuit, borné par le quota de variantes."
          },
          {
            "code": "I3",
            "status": "quota-real",
            "quota": "« 200 variations » (plan gratuit, /pricing)",
            "source_url": "https://chessatlas.net/features/repertoire-builder",
            "note_fr": "Saisie des coups sur l'échiquier du constructeur gratuit ; pas de photo/OCR."
          },
          {
            "code": "I4",
            "status": "paid",
            "quota": null,
            "source_url": "https://chessatlas.net/pricing",
            "note_fr": "Les filtres portent sur les parties importées — import réservé au Premium."
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/app/id6770867404",
            "note_fr": "Séries et classements décrits sans condition d'abonnement."
          },
          {
            "code": "K1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessatlas.net/privacy",
            "note_fr": "Export PGN du répertoire (page repertoire-builder) et portabilité RGPD, sans restriction de plan."
          },
          {
            "code": "K2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessatlas.net/privacy",
            "note_fr": "Identique pour tous les comptes."
          },
          {
            "code": "K3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessatlas.net/features/repertoire-builder",
            "note_fr": "PGN gratuit ; pas d'API publique ni de code ouvert."
          }
        ]
      }
    },
    {
      "slug": "playchess-serveur-chessbase",
      "name": "Playchess (serveur ChessBase)",
      "url": "https://play.chessbase.com/",
      "kind": "platform",
      "type": {
        "en": "ChessBase play server and apps",
        "fr": "serveur de jeu et apps ChessBase"
      },
      "price": {
        "en": "€49.90/yr (Premium, annual price shown on account.chessbase.com/en/matrix); Starter €34.90/yr",
        "fr": "49,90 €/an (Premium, annuel affiché sur account.chessbase.com/en/matrix) ; Starter 34,90 €/an"
      },
      "languages": 4,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 4.62,
      "unweighted_score": 4.63,
      "category_scores": {
        "A": 2.1,
        "B": 7.2,
        "C": 2.6,
        "D": 6.7,
        "E": 2.5,
        "F": 8,
        "G": 5,
        "H": 4,
        "I": 4.2,
        "J": 4.2,
        "K": 4.4
      },
      "scores": {
        "A": [
          1,
          2,
          0,
          0,
          0,
          0,
          1,
          1
        ],
        "B": [
          2,
          2,
          1,
          2,
          3,
          3
        ],
        "C": [
          0,
          2,
          1,
          1,
          0,
          1,
          2,
          0,
          0
        ],
        "D": [
          2,
          2,
          2,
          2
        ],
        "E": [
          0,
          0,
          1,
          2
        ],
        "F": [
          2,
          3,
          3,
          1,
          3
        ],
        "G": [
          1,
          2,
          1,
          2
        ],
        "H": [
          3,
          1,
          1,
          0,
          1
        ],
        "I": [
          1,
          2,
          1,
          1
        ],
        "J": [
          2,
          2,
          1,
          0
        ],
        "K": [
          2,
          1,
          1
        ]
      },
      "evidence_urls": {
        "A": [
          "https://account.chessbase.com/en/matrix",
          "https://account.chessbase.com/en/matrix",
          "https://account.chessbase.com/en/matrix",
          "https://account.chessbase.com/en/matrix",
          "https://account.chessbase.com/en/matrix",
          "https://play.chessbase.com/en",
          "https://play.chessbase.com/en",
          "https://play.chessbase.com/en"
        ],
        "B": [
          "https://account.chessbase.com/en/matrix",
          "https://account.chessbase.com/en/matrix",
          "https://account.chessbase.com/en/matrix",
          "https://account.chessbase.com/en/matrix",
          "https://account.chessbase.com/en/matrix",
          "https://videos.chessbase.com/"
        ],
        "C": [
          "https://account.chessbase.com/en/matrix",
          "https://account.chessbase.com/en/matrix",
          "https://videos.chessbase.com/",
          "https://account.chessbase.com/en",
          "https://account.chessbase.com/en/matrix",
          "https://account.chessbase.com/en/matrix",
          "https://tactics.chessbase.com/",
          "https://account.chessbase.com/en/matrix",
          "https://account.chessbase.com/en/matrix"
        ],
        "D": [
          "https://play.chessbase.com/en",
          "https://account.chessbase.com/en/matrix",
          "https://account.chessbase.com/en/matrix",
          "https://account.chessbase.com/en/matrix"
        ],
        "E": [
          "https://play.chessbase.com/en",
          "https://videos.chessbase.com/",
          "https://account.chessbase.com/en/matrix",
          "https://play.chessbase.com/en"
        ],
        "F": [
          "https://videos.chessbase.com/",
          "https://videos.chessbase.com/",
          "https://account.chessbase.com/en/matrix",
          "https://play.chessbase.com/en",
          "https://videos.chessbase.com/"
        ],
        "G": [
          "https://play.chessbase.com/en",
          "https://play.chessbase.com/en",
          "https://account.chessbase.com/en/matrix",
          "https://play.chessbase.com/en"
        ],
        "H": [
          "https://account.chessbase.com/en/matrix",
          "https://play.chessbase.com/en",
          "https://account.chessbase.com/en/matrix",
          "https://play.chessbase.com/en",
          "https://play.chessbase.com/en"
        ],
        "I": [
          "https://account.chessbase.com/en",
          "https://account.chessbase.com/en",
          "https://account.chessbase.com/en/matrix",
          "https://account.chessbase.com/en/matrix"
        ],
        "J": [
          "https://account.chessbase.com/en/matrix",
          "https://play.chessbase.com/en",
          "https://account.chessbase.com/en/matrix",
          "https://account.chessbase.com/en/matrix"
        ],
        "K": [
          "https://account.chessbase.com/en/matrix",
          "https://en.chessbase.com/",
          "https://account.chessbase.com/en/matrix"
        ]
      },
      "sources": [
        "https://play.chessbase.com/en",
        "https://account.chessbase.com/en/matrix",
        "https://shop.chessbase.com/en/sta/aboutChessBase",
        "https://en.wikipedia.org/wiki/ChessBase",
        "https://en.chessbase.com/post/happy-birthday-15-years-of-playchess-com",
        "https://en.chessbase.com/post/time-to-get-started-with-playche-version-5",
        "https://en.chessbase.com/post/chessbase-26-expand-your-chess-horizon",
        "https://videos.chessbase.com/",
        "https://tactics.chessbase.com/",
        "https://account.chessbase.com/en",
        "https://en.chessbase.com/",
        "https://shop.chessbase.com/en/products/chessbase_18_premium_package"
      ],
      "review_url": "https://www.chesspivot.com/en/reviews/playchess-serveur-chessbase",
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 2.21,
        "criteria": [
          {
            "code": "A1",
            "status": "paid",
            "quota": null,
            "source_url": "https://account.chessbase.com/en/matrix",
            "note_fr": "MyGames Cloud (80/200 Mo) est un avantage Starter/Premium ; la matrice ne comporte aucune colonne Free"
          },
          {
            "code": "A2",
            "status": "paid",
            "quota": null,
            "source_url": "https://account.chessbase.com/en/matrix",
            "note_fr": "Let's Check / analyse cloud listés comme avantages Starter/Premium ; aucune analyse gratuite documentée"
          },
          {
            "code": "A3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A7",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://play.chessbase.com/en",
            "note_fr": "« Creating an account is free » : parties classées gratuites, donc classement suivi par cadence"
          },
          {
            "code": "A8",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://play.chessbase.com/en",
            "note_fr": "classements par cadence visibles avec le compte gratuit (jeu classé gratuit)"
          },
          {
            "code": "B1",
            "status": "paid",
            "quota": null,
            "source_url": "https://account.chessbase.com/en/matrix",
            "note_fr": "app « Openings » (répertoire personnel) = avantage Premium dans la matrice"
          },
          {
            "code": "B2",
            "status": "paid",
            "quota": null,
            "source_url": "https://account.chessbase.com/en/matrix",
            "note_fr": "entraînement du répertoire dans l'app Openings, réservée Premium"
          },
          {
            "code": "B3",
            "status": "paid",
            "quota": null,
            "source_url": "https://account.chessbase.com/en/matrix",
            "note_fr": "statistiques MyGames liées au cloud Starter/Premium"
          },
          {
            "code": "B4",
            "status": "paid",
            "quota": null,
            "source_url": "https://account.chessbase.com/en/matrix",
            "note_fr": "Live Book et moteur intégrés aux apps payantes (Openings/Fritz online)"
          },
          {
            "code": "B5",
            "status": "undocumented",
            "quota": null,
            "source_url": null,
            "note_fr": "matrice sans colonne Free ; l'accès gratuit à la Live Database n'est établi nulle part (mention tierce d'un accès « limité » sans chiffre)"
          },
          {
            "code": "B6",
            "status": "paid",
            "quota": null,
            "source_url": "https://en.chessbase.com/post/chessbase-account-no-new-costs-just-new-features",
            "note_fr": "« these videos are only available to Premium subscribers » ; quelques vidéos d’appel gratuites non systématiques"
          },
          {
            "code": "C1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://tactics.chessbase.com/en",
            "note_fr": "« Creating an account is free. You will get a tactical rating and positions of your strength » ; aucun quota d’usage publié (les volumes 10 000/90 000 de la matrice concernent Starter/Premium)"
          },
          {
            "code": "C3",
            "status": "paid",
            "quota": null,
            "source_url": "https://en.chessbase.com/post/chessbase-account-no-new-costs-just-new-features",
            "note_fr": "vidéos de finales = section vidéo réservée Premium"
          },
          {
            "code": "C4",
            "status": "paid",
            "quota": null,
            "source_url": "https://en.chessbase.com/post/chessbase-account-no-new-costs-just-new-features",
            "note_fr": "leçons vidéo (Openings/Middlegame/Endgame) réservées Premium"
          },
          {
            "code": "C5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C6",
            "status": "paid",
            "quota": null,
            "source_url": "https://account.chessbase.com/en/matrix",
            "note_fr": "« calculation training » de Fritz online = avantage Premium"
          },
          {
            "code": "C7",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://tactics.chessbase.com/en",
            "note_fr": "cote tactique attribuée au compte gratuit : « positions of your strength »"
          },
          {
            "code": "C8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C9",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://play.chessbase.com/en",
            "note_fr": "critère informationnel — « Creating an account is free » (jeu classé, spectateur, tactique)"
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://account.chessbase.com/en/matrix",
            "note_fr": "critère informationnel — Premium 49,90 €/an affiché publiquement"
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://account.chessbase.com/en/matrix",
            "note_fr": "critère informationnel — prix et « 90 days free trial » affichés"
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://account.chessbase.com/en/matrix",
            "note_fr": "critère informationnel — deux paliers publiés (Starter/Premium)"
          },
          {
            "code": "E1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://account.chessbase.com/en/matrix",
            "note_fr": "critère informationnel — pages publiques"
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://play.chessbase.com/en",
            "note_fr": "critère informationnel — discours public"
          },
          {
            "code": "F1",
            "status": "paid",
            "quota": null,
            "source_url": "https://en.chessbase.com/post/chessbase-account-no-new-costs-just-new-features",
            "note_fr": "cours vidéo par niveau : section vidéo réservée Premium"
          },
          {
            "code": "F2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://videos.chessbase.com/",
            "note_fr": "critère informationnel — auteurs (GM/IM) visibles sur le catalogue public"
          },
          {
            "code": "F3",
            "status": "paid",
            "quota": null,
            "source_url": "https://en.chessbase.com/post/chessbase-account-no-new-costs-just-new-features",
            "note_fr": "le format principal (vidéos) est Premium ; seule la tactique interactive est gratuite"
          },
          {
            "code": "F4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://play.chessbase.com/en",
            "note_fr": "critère informationnel — conseils par niveau publiés sur la page publique"
          },
          {
            "code": "F5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://videos.chessbase.com/",
            "note_fr": "critère informationnel — dates de publication visibles publiquement"
          },
          {
            "code": "G1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://play.chessbase.com/en",
            "note_fr": "« Creating an account is free » : bullet/blitz/lent classés contre des humains, sans quota publié"
          },
          {
            "code": "G2",
            "status": "paid",
            "quota": null,
            "source_url": "https://account.chessbase.com/en/matrix",
            "note_fr": "Fritz online (jouer contre Fritz) = avantage Premium ; seules les « beginner games with hints » (vs humains) sont gratuites"
          },
          {
            "code": "G3",
            "status": "paid",
            "quota": null,
            "source_url": "https://account.chessbase.com/en/matrix",
            "note_fr": "« Setup position » de Fritz online = Premium"
          },
          {
            "code": "G4",
            "status": "undocumented",
            "quota": null,
            "source_url": null,
            "note_fr": "tournois quotidiens affichés, mais la participation avec un compte gratuit n’est établie sur aucune page publique"
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://account.chessbase.com/en/matrix",
            "note_fr": "critère informationnel — plateformes listées publiquement"
          },
          {
            "code": "H2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://play.chessbase.com/en",
            "note_fr": "critère informationnel"
          },
          {
            "code": "H3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://account.chessbase.com/en/matrix",
            "note_fr": "critère informationnel — langues du compte web"
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://play.chessbase.com/en",
            "note_fr": "critère informationnel"
          },
          {
            "code": "I1",
            "status": "undocumented",
            "quota": null,
            "source_url": null,
            "note_fr": "Players Database : l’accès avec un compte gratuit n’est établi sur aucune page publique (matrice sans colonne Free)"
          },
          {
            "code": "I2",
            "status": "paid",
            "quota": null,
            "source_url": "https://account.chessbase.com/en/matrix",
            "note_fr": "annotation/partage via MyGames Cloud, avantage Starter/Premium"
          },
          {
            "code": "I3",
            "status": "paid",
            "quota": null,
            "source_url": "https://account.chessbase.com/en/matrix",
            "note_fr": "« Setup position » (Fritz online) = Premium"
          },
          {
            "code": "I4",
            "status": "paid",
            "quota": null,
            "source_url": "https://account.chessbase.com/en/matrix",
            "note_fr": "MyGames Cloud (80/200 Mo) = Starter/Premium"
          },
          {
            "code": "J1",
            "status": "paid",
            "quota": null,
            "source_url": "https://account.chessbase.com/en/matrix",
            "note_fr": "« GM simultaneous exhibitions », « live training » = Premium"
          },
          {
            "code": "J2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://play.chessbase.com/en",
            "note_fr": "observer les parties/kibitz est gratuit (« watch live master games », « follow community blitz games »)"
          },
          {
            "code": "J3",
            "status": "undocumented",
            "quota": null,
            "source_url": null,
            "note_fr": "aucun outil coach/club documenté sur les pages publiques"
          },
          {
            "code": "J4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "K1",
            "status": "paid",
            "quota": null,
            "source_url": "https://account.chessbase.com/en/matrix",
            "note_fr": "« PGN downloads » = avantage Premium"
          },
          {
            "code": "K2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://en.chessbase.com/",
            "note_fr": "critère informationnel — politique cookies/confidentialité publique"
          },
          {
            "code": "K3",
            "status": "paid",
            "quota": null,
            "source_url": "https://account.chessbase.com/en/matrix",
            "note_fr": "seul export = PGN downloads (Premium) ; aucune API"
          }
        ]
      }
    },
    {
      "slug": "chessflare",
      "name": "Chessflare",
      "url": "https://chessflare.com",
      "kind": "platform",
      "type": {
        "en": "openings + analysis + puzzles platform",
        "fr": "plateforme ouvertures + analyse + puzzles"
      },
      "price": {
        "en": "$59.99/yr ≈ €55 (annual price shown on /pricing; monthly $6.49; lifetime $110)",
        "fr": "59,99 $/an ≈ 55 € (annuel affiché sur /pricing ; mensuel 6,49 $ ; à vie 110 $)"
      },
      "languages": 11,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 4.49,
      "unweighted_score": 4.35,
      "category_scores": {
        "A": 5,
        "B": 3.9,
        "C": 3,
        "D": 7.5,
        "E": 3.3,
        "F": 4.7,
        "G": 1.7,
        "H": 5.3,
        "I": 4.2,
        "J": 2.5,
        "K": 6.7
      },
      "scores": {
        "A": [
          3,
          2,
          1,
          2,
          2,
          0,
          2,
          0
        ],
        "B": [
          2,
          2,
          1,
          0,
          1,
          1
        ],
        "C": [
          2,
          1,
          1,
          0,
          0,
          0,
          0,
          2,
          2
        ],
        "D": [
          2,
          2,
          2,
          3
        ],
        "E": [
          0,
          0,
          2,
          2
        ],
        "F": [
          2,
          0,
          2,
          1,
          2
        ],
        "G": [
          0,
          2,
          0,
          0
        ],
        "H": [
          3,
          2,
          2,
          0,
          1
        ],
        "I": [
          0,
          2,
          1,
          2
        ],
        "J": [
          0,
          1,
          0,
          2
        ],
        "K": [
          2,
          3,
          1
        ]
      },
      "evidence_urls": {
        "A": [
          "https://chessflare.com/fr",
          "https://chessflare.com",
          "https://chessflare.com",
          "https://chessflare.com/changelog",
          "https://chessflare.com",
          "https://chessflare.com",
          "https://chessflare.com",
          "https://chessflare.com"
        ],
        "B": [
          "https://chessflare.com",
          "https://chessflare.com",
          "https://chessflare.com/changelog",
          "https://chessflare.com",
          "https://chessflare.com/changelog",
          "https://chessflare.com/fr/courses"
        ],
        "C": [
          "https://chessflare.com",
          "https://chessflare.com",
          "https://apps.apple.com/us/app/chessflare-learn-chess/id6752779245",
          "https://chessflare.com",
          "https://chessflare.com",
          "https://chessflare.com",
          "https://chessflare.com/https://chessflare.com/pricing",
          "https://chessflare.com/fr",
          "https://chessflare.com/changelog"
        ],
        "D": [
          "https://chessflare.com/pricing",
          "https://chessflare.com/pricing",
          "https://chessflare.com/pricing",
          "https://chessflare.com/pricing"
        ],
        "E": [
          "https://chessflare.com",
          "https://chessflare.com",
          "https://chessflare.com/fr",
          "https://chessflare.com"
        ],
        "F": [
          "https://chessflare.com/fr/courses",
          "https://chessflare.com/fr/courses",
          "https://chessflare.com",
          "https://chessflare.com/blog",
          "https://chessflare.com/changelog"
        ],
        "G": [
          "https://chessflare.com/changelog",
          "https://chessflare.com/changelog",
          "https://chessflare.com",
          "https://chessflare.com"
        ],
        "H": [
          "https://chessflare.com",
          "https://play.google.com/store/apps/details?id=com.chessflare.app",
          "https://chessflare.com/fr",
          "https://chessflare.com",
          "https://chessflare.com"
        ],
        "I": [
          "https://chessflare.com",
          "https://chessflare.com/fr",
          "https://chessflare.com",
          "https://chessflare.com/changelog"
        ],
        "J": [
          "https://chessflare.com",
          "https://chessflare.com/fr/courses",
          "https://chessflare.com",
          "https://chessflare.com/changelog"
        ],
        "K": [
          "https://chessflare.com",
          "https://chessflare.com/privacy-policy",
          "https://chessflare.com"
        ]
      },
      "sources": [
        "https://chessflare.com/",
        "https://chessflare.com/changelog",
        "https://chessflare.com/pricing",
        "https://chessflare.com/privacy-policy",
        "https://zence.fr",
        "https://apps.apple.com/us/app/id6752779245",
        "https://apps.apple.com/us/app/chessflare-learn-chess/id6752779245"
      ],
      "review_url": "https://www.chesspivot.com/en/reviews/chessflare",
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 3.45,
        "criteria": [
          {
            "code": "A1",
            "status": "quota-symbolic",
            "quota": "« Unlimited game statistics » — colonne Free : « 25 »",
            "source_url": "https://chessflare.com/pricing",
            "note_fr": "import/sync Chess.com-Lichess-PGN disponible en Free, mais les statistiques de parties sont plafonnées à 25 (ni période ni renouvellement publiés)"
          },
          {
            "code": "A2",
            "status": "quota-symbolic",
            "quota": "« Unlimited game summaries » — colonne Free : « Limited »",
            "source_url": "https://chessflare.com/pricing",
            "note_fr": "borne chiffrée non publiée ; statut le plus défavorable des deux quotas possibles"
          },
          {
            "code": "A3",
            "status": "quota-symbolic",
            "quota": "« Unlimited game statistics » — colonne Free : « 25 »",
            "source_url": "https://chessflare.com/pricing",
            "note_fr": "les « Advanced Player Stats » reposent sur les statistiques plafonnées à 25 parties"
          },
          {
            "code": "A4",
            "status": "quota-symbolic",
            "quota": "« Unlimited mistake correction » — colonne Free : « Limited »",
            "source_url": "https://chessflare.com/pricing",
            "note_fr": "Blunder Review / Weak Spot rangés sous « mistake correction », limités en Free sans chiffre"
          },
          {
            "code": "A5",
            "status": "quota-symbolic",
            "quota": "« Unlimited game summaries » — colonne Free : « Limited »",
            "source_url": "https://chessflare.com/pricing",
            "note_fr": "explications portées par les Game Summaries, limitées en Free"
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A7",
            "status": "quota-symbolic",
            "quota": "« Unlimited game statistics » — colonne Free : « 25 »",
            "source_url": "https://chessflare.com/pricing",
            "note_fr": "« Track trends » repose sur les statistiques plafonnées à 25 parties"
          },
          {
            "code": "A8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B1",
            "status": "quota-symbolic",
            "quota": "« Unlimited PGN repertoire editor » — colonne Free : « Limited »",
            "source_url": "https://chessflare.com/pricing",
            "note_fr": "borne chiffrée non publiée"
          },
          {
            "code": "B2",
            "status": "quota-symbolic",
            "quota": "« Unlimited spaced repetition » — colonne Free : « Limited »",
            "source_url": "https://chessflare.com/pricing",
            "note_fr": "Opening Trainer + révision espacée limités en Free sans chiffre"
          },
          {
            "code": "B3",
            "status": "quota-symbolic",
            "quota": "« Unlimited game statistics » — colonne Free : « 25 »",
            "source_url": "https://chessflare.com/pricing",
            "note_fr": "statistiques d’ouverture calculées sur les parties, plafond 25"
          },
          {
            "code": "B4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B5",
            "status": "quota-symbolic",
            "quota": "« Unlimited game statistics » — colonne Free : « 25 »",
            "source_url": "https://chessflare.com/pricing",
            "note_fr": "statistiques d’ouverture sur les propres parties, plafond 25"
          },
          {
            "code": "B6",
            "status": "quota-symbolic",
            "quota": "« Unlimited learning paths » — colonne Free : « Limited »",
            "source_url": "https://chessflare.com/pricing",
            "note_fr": "les 51 cours d’ouverture relèvent des learning paths, limités en Free"
          },
          {
            "code": "C1",
            "status": "quota-symbolic",
            "quota": "« Unlimited mistake correction » — colonne Free : « Limited »",
            "source_url": "https://chessflare.com/pricing",
            "note_fr": "Weak Spot puzzles / Blunder Review = « mistake correction », limités en Free"
          },
          {
            "code": "C2",
            "status": "quota-symbolic",
            "quota": "« All our tools » — colonne Free : « Limited »",
            "source_url": "https://chessflare.com/pricing",
            "note_fr": "Woodpecker/puzzles couverts par la ligne fourre-tout « All our tools : Limited »"
          },
          {
            "code": "C3",
            "status": "quota-symbolic",
            "quota": "« Unlimited learning paths » — colonne Free : « Limited »",
            "source_url": "https://chessflare.com/pricing",
            "note_fr": "cours de finales = learning paths, limités en Free"
          },
          {
            "code": "C4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C8",
            "status": "quota-symbolic",
            "quota": "« Unlimited spaced repetition » — colonne Free : « Limited »",
            "source_url": "https://chessflare.com/pricing",
            "note_fr": "répétition espacée SM2 limitée en Free sans chiffre"
          },
          {
            "code": "C9",
            "status": "quota-symbolic",
            "quota": "« All our tools » — colonne Free : « Limited »",
            "source_url": "https://chessflare.com/pricing",
            "note_fr": "routine quotidienne couverte par « All our tools : Limited » ; aucun détail publié"
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessflare.com/pricing",
            "note_fr": "critère informationnel — plan Free public, « No credit card required »"
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessflare.com/pricing",
            "note_fr": "critère informationnel — « $59.99 / year » affiché"
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessflare.com/pricing",
            "note_fr": "critère informationnel — « 7-day trial included », « Cancel anytime »"
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessflare.com/pricing",
            "note_fr": "critère informationnel — un seul palier Pro"
          },
          {
            "code": "E1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessflare.com/fr",
            "note_fr": "critère informationnel — SM2 nommé publiquement"
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessflare.com/",
            "note_fr": "critère informationnel — discours public"
          },
          {
            "code": "F1",
            "status": "quota-symbolic",
            "quota": "« Unlimited learning paths » — colonne Free : « Limited »",
            "source_url": "https://chessflare.com/pricing",
            "note_fr": "cours classés par niveau accessibles via les learning paths, limités en Free"
          },
          {
            "code": "F2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessflare.com/",
            "note_fr": "critère informationnel — formats (texte/diagrammes + drills) constatables publiquement"
          },
          {
            "code": "F4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessflare.com/blog",
            "note_fr": "critère informationnel — guide « Chess Study Plan » public"
          },
          {
            "code": "F5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessflare.com/changelog",
            "note_fr": "critère informationnel — changelog public"
          },
          {
            "code": "G1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G2",
            "status": "quota-symbolic",
            "quota": "« All our tools » — colonne Free : « Limited »",
            "source_url": "https://chessflare.com/pricing",
            "note_fr": "bots « with personality » non listés à part ; couverts par « All our tools : Limited »"
          },
          {
            "code": "G3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessflare.com/",
            "note_fr": "critère informationnel — Web + iOS + Android"
          },
          {
            "code": "H2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://play.google.com/store/apps/details?id=com.chessflare.app",
            "note_fr": "critère informationnel — notes stores publiques"
          },
          {
            "code": "H3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessflare.com/fr",
            "note_fr": "critère informationnel — 11 langues"
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessflare.com/",
            "note_fr": "critère informationnel"
          },
          {
            "code": "I1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I2",
            "status": "quota-symbolic",
            "quota": "« Unlimited studies » — colonne Free : « Limited »",
            "source_url": "https://chessflare.com/pricing",
            "note_fr": "études PGN partagées limitées en Free sans chiffre"
          },
          {
            "code": "I3",
            "status": "quota-symbolic",
            "quota": "« Unlimited PGN repertoire editor » — colonne Free : « Limited »",
            "source_url": "https://chessflare.com/pricing",
            "note_fr": "saisie via l’éditeur PGN, limité en Free"
          },
          {
            "code": "I4",
            "status": "quota-symbolic",
            "quota": "« Unlimited game statistics » — colonne Free : « 25 »",
            "source_url": "https://chessflare.com/pricing",
            "note_fr": "historique/filtres portés par les statistiques plafonnées à 25 parties"
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessflare.com/fr/courses",
            "note_fr": "critère informationnel — cours publics de la communauté visibles sans payer"
          },
          {
            "code": "J3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J4",
            "status": "undocumented",
            "quota": null,
            "source_url": null,
            "note_fr": "le « challenge progression system » (changelog 13/08/2026) n’est rattaché à aucune colonne Free/Pro publiée"
          },
          {
            "code": "K1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessflare.com/privacy-policy",
            "note_fr": "portabilité « in a readable format » garantie à tout utilisateur ; partage PGN natif"
          },
          {
            "code": "K2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessflare.com/privacy-policy",
            "note_fr": "critère informationnel — Hetzner (Allemagne), RGPD, « never sold »"
          },
          {
            "code": "K3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessflare.com/privacy-policy",
            "note_fr": "critère informationnel — pas d’API ; l’import/export PGN et la portabilité existent pour tout compte"
          }
        ]
      }
    },
    {
      "slug": "qchess-net",
      "name": "qchess.net",
      "url": "https://qchess.net/",
      "kind": "platform",
      "type": {
        "en": "free drills toolkit + OTB database",
        "fr": "boîte à outils gratuite drills + base OTB"
      },
      "price": {
        "en": "€0 (free, \"non-commercial\", no paid offer on the site)",
        "fr": "0 € (gratuit, « non commercial », aucune offre payante sur le site)"
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 4.32,
      "unweighted_score": 3.57,
      "category_scores": {
        "A": 3.3,
        "B": 5,
        "C": 4.1,
        "D": 10,
        "E": 2.5,
        "F": 2,
        "G": 2.5,
        "H": 0.7,
        "I": 4.2,
        "J": 1.7,
        "K": 3.3
      },
      "scores": {
        "A": [
          2,
          2,
          2,
          2,
          0,
          0,
          0,
          0
        ],
        "B": [
          2,
          2,
          2,
          0,
          2,
          1
        ],
        "C": [
          2,
          1,
          1,
          2,
          2,
          2,
          0,
          0,
          1
        ],
        "D": [
          3,
          3,
          3,
          3
        ],
        "E": [
          0,
          0,
          1,
          2
        ],
        "F": [
          0,
          0,
          2,
          1,
          0
        ],
        "G": [
          0,
          2,
          1,
          0
        ],
        "H": [
          1,
          0,
          0,
          0,
          0
        ],
        "I": [
          2,
          0,
          1,
          2
        ],
        "J": [
          0,
          0,
          0,
          2
        ],
        "K": [
          2,
          0,
          1
        ]
      },
      "evidence_urls": {
        "A": [
          "https://qchess.net/timemanagementlobby",
          "https://qchess.net/blunderfixlobby",
          "https://qchess.net/blunderfixlobby",
          "https://qchess.net/blunderfixlobby",
          "https://qchess.net/blunderfixlobby",
          "https://qchess.net/",
          "https://qchess.net/",
          "https://qchess.net/blunderfixlobby"
        ],
        "B": [
          "https://qchess.net/",
          "https://qchess.net/",
          "https://qchess.net/openingweaknessfinder",
          "https://qchess.net/",
          "https://qchess.net/",
          "https://qchess.net/"
        ],
        "C": [
          "https://qchess.net/blunderfixlobby",
          "https://qchess.net/",
          "https://qchess.net/",
          "https://qchess.net/",
          "https://qchess.net/",
          "https://qchess.net/",
          "https://qchess.net/",
          "https://qchess.net/",
          "https://qchess.net/trainingplans"
        ],
        "D": [
          "https://qchess.net/",
          "https://qchess.net/",
          "https://qchess.net/",
          "https://qchess.net/"
        ],
        "E": [
          "https://qchess.net/",
          "https://qchess.net/",
          "https://qchess.net/",
          "https://qchess.net/"
        ],
        "F": [
          "https://qchess.net/",
          "https://qchess.net/",
          "https://qchess.net/",
          "https://qchess.net/trainingplans",
          "https://qchess.net/"
        ],
        "G": [
          "https://qchess.net/",
          "https://qchess.net/",
          "https://qchess.net/",
          "https://qchess.net/"
        ],
        "H": [
          "https://qchess.net/",
          "https://qchess.net/",
          "https://qchess.net/",
          "https://qchess.net/",
          "https://qchess.net/about"
        ],
        "I": [
          "https://qchess.net/openingweaknessfinder",
          "https://qchess.net/",
          "https://qchess.net/",
          "https://qchess.net/blunderfixlobby"
        ],
        "J": [
          "https://qchess.net/",
          "https://qchess.net/",
          "https://qchess.net/",
          "https://qchess.net/"
        ],
        "K": [
          "https://qchess.net/",
          "https://qchess.net/about",
          "https://qchess.net/"
        ]
      },
      "sources": [
        "https://qchess.net/",
        "https://qchess.net/about",
        "https://qchess.net/grimlobby",
        "https://www.chess.com/blog/MattyDPerrine/3-lesser-known-websites-to-improve-your-chess-game",
        "https://qchess.net/articles",
        "https://chesschatter.substack.com/p/3-lesser-known-websites-to-improve",
        "https://qchess.net/timemanagementlobby",
        "https://qchess.net/blunderfixlobby",
        "https://qchess.net/openingweaknessfinder",
        "https://qchess.net/trainingplans",
        "https://trendingchess.com/qchess"
      ],
      "review_url": "https://www.chesspivot.com/en/reviews/qchess-net",
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 4.32,
        "criteria": [
          {
            "code": "A1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://qchess.net/",
            "note_fr": "« It is non commercial and made for the love of the game » — aucun palier payant, aucun quota publié"
          },
          {
            "code": "A2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://qchess.net/blunderfixlobby",
            "note_fr": "analyse à la demande par lots de 1 à 100 parties, relançable, tout gratuit (« non commercial »)"
          },
          {
            "code": "A3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://qchess.net/blunderfixlobby",
            "note_fr": "site entièrement gratuit, aucun quota publié"
          },
          {
            "code": "A4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://qchess.net/",
            "note_fr": "site entièrement gratuit"
          },
          {
            "code": "A5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://qchess.net/",
            "note_fr": "site entièrement gratuit"
          },
          {
            "code": "B2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://qchess.net/",
            "note_fr": "site entièrement gratuit"
          },
          {
            "code": "B3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://qchess.net/openingweaknessfinder",
            "note_fr": "site entièrement gratuit"
          },
          {
            "code": "B4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://qchess.net/",
            "note_fr": "base 4 M de parties OTB, gratuite"
          },
          {
            "code": "B6",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://qchess.net/",
            "note_fr": "articles et model games gratuits"
          },
          {
            "code": "C1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://qchess.net/blunderfixlobby",
            "note_fr": "site entièrement gratuit"
          },
          {
            "code": "C2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://qchess.net/",
            "note_fr": "drills gratuits, aucun quota publié"
          },
          {
            "code": "C3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://qchess.net/",
            "note_fr": "statistiques de finales gratuites"
          },
          {
            "code": "C4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://qchess.net/",
            "note_fr": "drills gratuits"
          },
          {
            "code": "C5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://qchess.net/",
            "note_fr": "drills gratuits"
          },
          {
            "code": "C6",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://qchess.net/",
            "note_fr": "drills gratuits"
          },
          {
            "code": "C7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C9",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://qchess.net/trainingplans",
            "note_fr": "plans-gabarits gratuits"
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://qchess.net/",
            "note_fr": "critère informationnel — « non commercial and made for the love of the game »"
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://qchess.net/",
            "note_fr": "critère informationnel — 0 €"
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://qchess.net/",
            "note_fr": "critère informationnel — rien à payer ni résilier"
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://qchess.net/",
            "note_fr": "critère informationnel — aucun palier payant"
          },
          {
            "code": "E1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://qchess.net/",
            "note_fr": "critère informationnel — Stockfish cité publiquement"
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://qchess.net/",
            "note_fr": "critère informationnel — ton factuel public"
          },
          {
            "code": "F1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://qchess.net/",
            "note_fr": "articles + drills gratuits"
          },
          {
            "code": "F4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://qchess.net/trainingplans",
            "note_fr": "plans publics gratuits"
          },
          {
            "code": "F5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://qchess.net/",
            "note_fr": "« Grimmer AI » gratuit, aucun quota publié"
          },
          {
            "code": "G3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://qchess.net/",
            "note_fr": "Analysis Board gratuit depuis toute position"
          },
          {
            "code": "G4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://qchess.net/",
            "note_fr": "critère informationnel — site web seul"
          },
          {
            "code": "H2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://qchess.net/openingweaknessfinder",
            "note_fr": "recherche sur tout joueur Lichess/OTB, gratuite"
          },
          {
            "code": "I2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://qchess.net/",
            "note_fr": "saisie de position sur échiquier, gratuite"
          },
          {
            "code": "I4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://qchess.net/blunderfixlobby",
            "note_fr": "filtres gratuits"
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://qchess.net/",
            "note_fr": "critère informationnel — aucune mécanique commerciale (« non commercial »)"
          },
          {
            "code": "K1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://qchess.net/",
            "note_fr": "export PGN gratuit (Repertoire Flow/Shortener)"
          },
          {
            "code": "K2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "K3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://qchess.net/",
            "note_fr": "critère informationnel — PGN seulement, pas d’API ; rien de payant"
          }
        ]
      }
    },
    {
      "slug": "chessigma",
      "name": "Chessigma",
      "url": "https://chessigma.com/",
      "kind": "platform",
      "type": {
        "en": "Freemium game analysis and AI coach",
        "fr": "Analyse de parties et coach IA freemium"
      },
      "price": {
        "en": "€83/yr (annual price shown; monthly €12/mo; lifetime €299) — free tier: unlimited analysis",
        "fr": "83 €/an (annuel affiché ; mensuel 12 €/mois ; lifetime 299 €) — gratuit : analyse illimitée"
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 4.3,
      "unweighted_score": 3.51,
      "category_scores": {
        "A": 6.3,
        "B": 3.3,
        "C": 3.7,
        "D": 7.5,
        "E": 2.5,
        "F": 2,
        "G": 2.5,
        "H": 3.3,
        "I": 1.7,
        "J": 2.5,
        "K": 3.3
      },
      "scores": {
        "A": [
          3,
          3,
          2,
          2,
          2,
          0,
          1,
          2
        ],
        "B": [
          2,
          2,
          1,
          0,
          1,
          0
        ],
        "C": [
          2,
          1,
          0,
          0,
          2,
          0,
          1,
          2,
          2
        ],
        "D": [
          3,
          1,
          2,
          3
        ],
        "E": [
          1,
          0,
          2,
          0
        ],
        "F": [
          0,
          0,
          0,
          1,
          2
        ],
        "G": [
          0,
          1,
          2,
          0
        ],
        "H": [
          3,
          1,
          0,
          0,
          1
        ],
        "I": [
          0,
          0,
          1,
          1
        ],
        "J": [
          0,
          1,
          0,
          2
        ],
        "K": [
          1,
          1,
          1
        ]
      },
      "evidence_urls": {
        "A": [
          "https://chessigma.com/",
          "https://www.chessigma.com/blog/how-chessigma-analysis-works",
          "https://www.chessigma.com/supercoach",
          "https://www.chessigma.com/supercoach",
          "https://www.chessigma.com/supercoach",
          "https://www.chessigma.com/supercoach",
          "https://www.chessigma.com/supercoach",
          "https://www.chessigma.com/supercoach"
        ],
        "B": [
          "https://www.chessigma.com/pricing",
          "https://www.chessigma.com/supercoach",
          "https://www.chessigma.com/supercoach",
          "https://www.chessigma.com/supercoach",
          "https://chessigma.com/",
          "https://chessigma.com/"
        ],
        "C": [
          "https://www.chessigma.com/supercoach",
          "https://chessigma.com/",
          "https://www.chessigma.com/supercoach",
          "https://chessigma.com/",
          "https://www.chessigma.com/supercoach",
          "https://www.chessigma.com/supercoach",
          "https://www.chessigma.com/supercoach",
          "https://www.chessigma.com/supercoach",
          "https://www.chessigma.com/pricing"
        ],
        "D": [
          "https://www.chessigma.com/pricing",
          "https://www.chessigma.com/pricing",
          "https://www.chessigma.com/pricing",
          "https://www.chessigma.com/pricing"
        ],
        "E": [
          "https://www.chessigma.com/supercoach",
          "https://chessigma.com/",
          "https://www.chessigma.com/blog/how-chessigma-analysis-works",
          "https://www.chessigma.com/supercoach"
        ],
        "F": [
          "https://chessigma.com/",
          "https://www.chessigma.com/privacy-policy",
          "https://chessigma.com/",
          "https://www.chessigma.com/supercoach",
          "https://apps.apple.com/us/app/chessigma/id6791621546"
        ],
        "G": [
          "https://chessigma.com/",
          "https://www.chessigma.com/supercoach",
          "https://www.chessigma.com/supercoach",
          "https://chessigma.com/"
        ],
        "H": [
          "https://chessigma.com/",
          "https://apps.apple.com/us/app/chessigma/id6791621546",
          "https://chessigma.com/",
          "https://chessigma.com/",
          "https://www.chessigma.com/blog/how-chessigma-analysis-works"
        ],
        "I": [
          "https://www.chessigma.com/supercoach",
          "https://chessigma.com/",
          "https://chessigma.com/",
          "https://chessigma.com/"
        ],
        "J": [
          "https://chessigma.com/",
          "https://chessigma.com/",
          "https://chessigma.com/",
          "https://www.chessigma.com/pricing"
        ],
        "K": [
          "https://www.chessigma.com/privacy-policy",
          "https://www.chessigma.com/privacy-policy",
          "https://chessigma.com/"
        ]
      },
      "sources": [
        "https://chessigma.com/",
        "https://www.chessigma.com/tos",
        "https://www.chessigma.com/privacy-policy",
        "https://www.chessigma.com/pricing",
        "https://www.chessigma.com/supercoach",
        "https://www.chessigma.com/blog",
        "https://www.chessigma.com/blog/launching-chessigma",
        "https://www.chessigma.com/blog/the-ai-chess-coach",
        "https://www.chessigma.com/blog/chess-wrapped-2025",
        "https://www.chessigma.com/blog/how-chessigma-analysis-works",
        "https://apps.apple.com/us/app/chessigma/id6791621546"
      ],
      "review_url": "https://www.chesspivot.com/en/reviews/chessigma",
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 2.66,
        "criteria": [
          {
            "code": "A1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessigma.com/pricing",
            "note_fr": "colonne Free : « Game review » (avec « unlimited game review » relevé sur la même page) — l’import Chess.com/Lichess/PGN alimente la revue gratuite"
          },
          {
            "code": "A2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessigma.com/pricing",
            "note_fr": "Free : « Game review » illimitée ; profondeur 14 publiée (blog how-chessigma-analysis-works)"
          },
          {
            "code": "A3",
            "status": "paid",
            "quota": null,
            "source_url": "https://www.chessigma.com/pricing",
            "note_fr": "les motifs récurrents relèvent du « Chess DNA report », listé côté payant"
          },
          {
            "code": "A4",
            "status": "paid",
            "quota": null,
            "source_url": "https://www.chessigma.com/pricing",
            "note_fr": "typologie portée par le « Chess DNA report » (payant)"
          },
          {
            "code": "A5",
            "status": "undocumented",
            "quota": null,
            "source_url": null,
            "note_fr": "le texte de coach cité vient du Supercoach/DNA report (payant) ; les pages publiques ne disent pas si la revue gratuite inclut une explication rédigée par erreur"
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A7",
            "status": "paid",
            "quota": null,
            "source_url": "https://www.chessigma.com/pricing",
            "note_fr": "« ELO Trend » présenté comme composante du rapport Supercoach/DNA, payant"
          },
          {
            "code": "A8",
            "status": "paid",
            "quota": null,
            "source_url": "https://www.chessigma.com/pricing",
            "note_fr": "percentiles par dimension = « Chess DNA report » (payant)"
          },
          {
            "code": "B1",
            "status": "quota-symbolic",
            "quota": "Opening Trainer — colonne Free : « 5 lines » (« Unlimited » en payant)",
            "source_url": "https://www.chessigma.com/pricing",
            "note_fr": null
          },
          {
            "code": "B2",
            "status": "quota-symbolic",
            "quota": "Opening Trainer — colonne Free : « 5 lines » (« Unlimited » en payant)",
            "source_url": "https://www.chessigma.com/pricing",
            "note_fr": null
          },
          {
            "code": "B3",
            "status": "paid",
            "quota": null,
            "source_url": "https://www.chessigma.com/pricing",
            "note_fr": "« prep depth » par ouverture = rapport Supercoach/DNA, payant"
          },
          {
            "code": "B4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessigma.com/pricing",
            "note_fr": "identification d’ouverture incluse dans la « Game review » gratuite"
          },
          {
            "code": "B6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C1",
            "status": "quota-symbolic",
            "quota": "Woodpecker — colonne Free : « 1 set » (« Unlimited » en payant)",
            "source_url": "https://www.chessigma.com/pricing",
            "note_fr": "Blunder Fix (exercices tirés de ses coups) est intégralement payant ; en Free il reste 1 set Woodpecker"
          },
          {
            "code": "C2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessigma.com/pricing",
            "note_fr": "colonne Free : « Puzzles »"
          },
          {
            "code": "C3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C5",
            "status": "paid",
            "quota": null,
            "source_url": "https://www.chessigma.com/pricing",
            "note_fr": "« Blunder Shield » listé côté payant"
          },
          {
            "code": "C6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C7",
            "status": "quota-real",
            "quota": "Human-like bots — colonne Free : « 2 bots » (« Unlimited » en payant)",
            "source_url": "https://www.chessigma.com/pricing",
            "note_fr": "parties illimitées contre 2 bots en Free ; le choix de niveaux est restreint, pas l’usage quotidien"
          },
          {
            "code": "C8",
            "status": "quota-symbolic",
            "quota": "Woodpecker — colonne Free : « 1 set » (« Unlimited » en payant)",
            "source_url": "https://www.chessigma.com/pricing",
            "note_fr": "cycles répétés possibles mais sur un seul set"
          },
          {
            "code": "C9",
            "status": "paid",
            "quota": null,
            "source_url": "https://www.chessigma.com/pricing",
            "note_fr": "Daily training plan : « Random » en Free, « Personalized » en payant — la personnalisation (l’objet du critère) est payante"
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessigma.com/pricing",
            "note_fr": "critère informationnel — colonne Free publiée"
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessigma.com/pricing",
            "note_fr": "critère informationnel — 83 €/an affiché"
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessigma.com/pricing",
            "note_fr": "critère informationnel — « 7-day money back », prix affichés"
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessigma.com/pricing",
            "note_fr": "critère informationnel — un seul palier payant"
          },
          {
            "code": "E1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessigma.com/supercoach",
            "note_fr": "critère informationnel — affirmation publique (« 91 Elo in their first month »)"
          },
          {
            "code": "E2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessigma.com/blog/how-chessigma-analysis-works",
            "note_fr": "critère informationnel — méthode publiée"
          },
          {
            "code": "E4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessigma.com/supercoach",
            "note_fr": "critère informationnel — méthode décrite publiquement"
          },
          {
            "code": "F5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/chessigma/id6791621546",
            "note_fr": "critère informationnel — versions datées publiques"
          },
          {
            "code": "G1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G2",
            "status": "quota-real",
            "quota": "Human-like bots — colonne Free : « 2 bots » (« Unlimited » en payant)",
            "source_url": "https://www.chessigma.com/pricing",
            "note_fr": "parties illimitées contre 2 bots"
          },
          {
            "code": "G3",
            "status": "undocumented",
            "quota": null,
            "source_url": null,
            "note_fr": "le « Bot Challenge » (rejouer ses positions) n’apparaît ni en Free ni en payant sur la page tarifs ; statut gratuit non établi"
          },
          {
            "code": "G4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessigma.com/",
            "note_fr": "critère informationnel — web, stores, desktop"
          },
          {
            "code": "H2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/chessigma/id6791621546",
            "note_fr": "critère informationnel — notes store publiques"
          },
          {
            "code": "H3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessigma.com/blog/how-chessigma-analysis-works",
            "note_fr": "critère informationnel"
          },
          {
            "code": "I1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I3",
            "status": "undocumented",
            "quota": null,
            "source_url": null,
            "note_fr": "le « Board editor » n’apparaît dans aucune colonne Free/Pro publiée"
          },
          {
            "code": "I4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessigma.com/pricing",
            "note_fr": "la liste des parties importées fait partie de la « Game review » gratuite ; aucun filtre avancé de toute façon"
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessigma.com/",
            "note_fr": "critère informationnel — club Chess.com public"
          },
          {
            "code": "J3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J4",
            "status": "paid",
            "quota": null,
            "source_url": "https://www.chessigma.com/pricing",
            "note_fr": "« Leaderboard » listé côté payant"
          },
          {
            "code": "K1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessigma.com/privacy-policy",
            "note_fr": "export des données sur demande, ouvert à tout utilisateur (réponse sous 30 jours)"
          },
          {
            "code": "K2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessigma.com/privacy-policy",
            "note_fr": "critère informationnel — Vercel/Supabase/GCP, AdSense"
          },
          {
            "code": "K3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessigma.com/",
            "note_fr": "critère informationnel — pas d’API ; l’import PGN est dans la revue gratuite"
          }
        ]
      }
    },
    {
      "slug": "lucas-chess",
      "name": "Lucas Chess",
      "url": "https://lucaschess.pythonanywhere.com/",
      "kind": "platform",
      "type": {
        "en": "open-source desktop training GUI",
        "fr": "GUI d’entraînement open source desktop"
      },
      "price": {
        "en": "€0 — free software GPL (https://github.com/lukasmonk/lucaschessR2: GPL-3.0 licence); rule: free",
        "fr": "0 € — logiciel libre GPL (https://github.com/lukasmonk/lucaschessR2 : licence GPL-3.0) ; règle : gratuit"
      },
      "languages": 24,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 4.29,
      "unweighted_score": 4.09,
      "category_scores": {
        "A": 2.1,
        "B": 3.3,
        "C": 5.2,
        "D": 10,
        "E": 5,
        "F": 1.3,
        "G": 2.5,
        "H": 3.3,
        "I": 5,
        "J": 1.7,
        "K": 5.6
      },
      "scores": {
        "A": [
          2,
          1,
          1,
          0,
          0,
          0,
          1,
          0
        ],
        "B": [
          2,
          2,
          0,
          0,
          1,
          1
        ],
        "C": [
          2,
          1,
          2,
          2,
          2,
          2,
          0,
          1,
          2
        ],
        "D": [
          3,
          3,
          3,
          3
        ],
        "E": [
          0,
          1,
          3,
          2
        ],
        "F": [
          0,
          0,
          0,
          0,
          2
        ],
        "G": [
          0,
          1,
          2,
          0
        ],
        "H": [
          0,
          0,
          2,
          0,
          3
        ],
        "I": [
          1,
          1,
          1,
          3
        ],
        "J": [
          0,
          0,
          0,
          2
        ],
        "K": [
          2,
          0,
          3
        ]
      },
      "evidence_urls": {
        "A": [
          "https://lucaschess.pythonanywhere.com/",
          "https://lucaschess.pythonanywhere.com/videos",
          "https://lucaschess.blogspot.com/",
          "https://lucaschess.pythonanywhere.com/documents",
          "https://lucaschess.pythonanywhere.com/documents",
          "https://lucaschess.pythonanywhere.com/documents",
          "https://lucaschess.pythonanywhere.com/",
          "https://lucaschess.pythonanywhere.com/"
        ],
        "B": [
          "https://lucaschess.pythonanywhere.com/",
          "https://lucaschess.pythonanywhere.com/documents",
          "https://lucaschess.pythonanywhere.com/documents",
          "https://lucaschess.pythonanywhere.com/documents",
          "https://lucaschess.pythonanywhere.com/",
          "https://lucaschess.pythonanywhere.com/documents"
        ],
        "C": [
          "https://lucaschess.pythonanywhere.com/videos",
          "https://lucaschess.pythonanywhere.com/documents",
          "https://lucaschess.pythonanywhere.com/documents",
          "https://lucaschess.pythonanywhere.com/documents",
          "https://lucaschess.pythonanywhere.com/documents",
          "https://lucaschess.pythonanywhere.com/documents",
          "https://lucaschess.pythonanywhere.com/",
          "https://lucaschess.pythonanywhere.com/documents",
          "https://lucaschess.pythonanywhere.com/documents"
        ],
        "D": [
          "https://github.com/lukasmonk/lucaschessR2",
          "https://github.com/lukasmonk/lucaschessR2",
          "https://lucaschess.pythonanywhere.com/",
          "https://github.com/lukasmonk/lucaschessR2"
        ],
        "E": [
          "https://lucaschess.pythonanywhere.com/",
          "https://github.com/lukasmonk/lucaschessR2",
          "https://github.com/lukasmonk/lucaschessR2",
          "https://lucaschess.pythonanywhere.com/"
        ],
        "F": [
          "https://lucaschess.pythonanywhere.com/documents",
          "https://lucaschess.pythonanywhere.com/",
          "https://lucaschess.pythonanywhere.com/documents",
          "https://lucaschess.pythonanywhere.com/documents",
          "https://lucaschess.pythonanywhere.com/downloads"
        ],
        "G": [
          "https://lucaschess.pythonanywhere.com/",
          "https://lucaschess.pythonanywhere.com/",
          "https://lucaschess.pythonanywhere.com/videos",
          "https://lucaschess.pythonanywhere.com/"
        ],
        "H": [
          "https://lucaschess.pythonanywhere.com/downloads",
          "https://github.com/lukasmonk/lucaschessR2",
          "https://lucaschess.pythonanywhere.com/",
          "https://lucaschess.pythonanywhere.com/documents",
          "https://github.com/lukasmonk/lucaschessR2"
        ],
        "I": [
          "https://lucaschess.blogspot.com/",
          "https://lucaschess.pythonanywhere.com/documents",
          "https://lucaschess.pythonanywhere.com/videos",
          "https://lucaschess.blogspot.com/"
        ],
        "J": [
          "https://lucaschess.pythonanywhere.com/",
          "https://lucaschess.pythonanywhere.com/",
          "https://lucaschess.pythonanywhere.com/",
          "https://lucaschess.pythonanywhere.com/"
        ],
        "K": [
          "https://lucaschess.pythonanywhere.com/",
          "https://lucaschess.pythonanywhere.com/",
          "https://github.com/lukasmonk/lucaschessR2"
        ]
      },
      "sources": [
        "https://lucaschess.pythonanywhere.com/",
        "https://lucaschess.pythonanywhere.com/downloads",
        "https://lucaschess.blogspot.com/",
        "https://github.com/lukasmonk/lucaschessR6/releases",
        "https://github.com/lukasmonk/lucaschessR6",
        "https://github.com/lukasmonk/lucaschessR2",
        "https://github.com/lukasmonk/lucaschessR2/releases"
      ],
      "review_url": "https://www.chesspivot.com/en/reviews/lucas-chess",
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 4.29,
        "criteria": [
          {
            "code": "A1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/lukasmonk/lucaschessR2",
            "note_fr": "logiciel libre local GPL-3.0 : import PGN sans limite"
          },
          {
            "code": "A2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/lukasmonk/lucaschessR2",
            "note_fr": "logiciel libre local : analyse à la demande, sans paywall ni quota"
          },
          {
            "code": "A3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/lukasmonk/lucaschessR2",
            "note_fr": "logiciel libre local"
          },
          {
            "code": "A4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A7",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lucaschess.pythonanywhere.com/",
            "note_fr": "courbes Lucas-Elo etc., tout gratuit (GPL-3.0)"
          },
          {
            "code": "A8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/lukasmonk/lucaschessR2",
            "note_fr": "logiciel libre local"
          },
          {
            "code": "B2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lucaschess.pythonanywhere.com/documents",
            "note_fr": "logiciel libre local"
          },
          {
            "code": "B3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/lukasmonk/lucaschessR2",
            "note_fr": "logiciel libre local"
          },
          {
            "code": "B6",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lucaschess.pythonanywhere.com/documents",
            "note_fr": "logiciel libre local"
          },
          {
            "code": "C1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lucaschess.pythonanywhere.com/videos",
            "note_fr": "logiciel libre local"
          },
          {
            "code": "C2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lucaschess.pythonanywhere.com/documents",
            "note_fr": "logiciel libre local"
          },
          {
            "code": "C3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lucaschess.pythonanywhere.com/documents",
            "note_fr": "logiciel libre local"
          },
          {
            "code": "C4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lucaschess.pythonanywhere.com/documents",
            "note_fr": "logiciel libre local"
          },
          {
            "code": "C5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lucaschess.pythonanywhere.com/documents",
            "note_fr": "logiciel libre local"
          },
          {
            "code": "C6",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lucaschess.pythonanywhere.com/documents",
            "note_fr": "logiciel libre local"
          },
          {
            "code": "C7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C8",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lucaschess.pythonanywhere.com/documents",
            "note_fr": "logiciel libre local (répétition manuelle, mais sans aucune limite)"
          },
          {
            "code": "C9",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lucaschess.pythonanywhere.com/documents",
            "note_fr": "logiciel libre local"
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/lukasmonk/lucaschessR2",
            "note_fr": "critère informationnel — GPL-3.0, tout gratuit"
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/lukasmonk/lucaschessR2",
            "note_fr": "critère informationnel — 0 €"
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lucaschess.pythonanywhere.com/",
            "note_fr": "critère informationnel — aucun paiement, aucun compte"
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/lukasmonk/lucaschessR2",
            "note_fr": "critère informationnel — aucun palier"
          },
          {
            "code": "E1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/lukasmonk/lucaschessR2",
            "note_fr": "critère informationnel — issues publiques"
          },
          {
            "code": "E3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/lukasmonk/lucaschessR2",
            "note_fr": "critère informationnel — code source public GPL-3.0"
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lucaschess.pythonanywhere.com/",
            "note_fr": "critère informationnel"
          },
          {
            "code": "F1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lucaschess.pythonanywhere.com/downloads",
            "note_fr": "critère informationnel — versions datées publiques"
          },
          {
            "code": "G1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lucaschess.pythonanywhere.com/",
            "note_fr": "« 57 engines … from 0 to 3600 elo », tout gratuit"
          },
          {
            "code": "G3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lucaschess.pythonanywhere.com/videos",
            "note_fr": "logiciel libre local"
          },
          {
            "code": "G4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lucaschess.pythonanywhere.com/",
            "note_fr": "critère informationnel — 24 langues"
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/lukasmonk/lucaschessR2",
            "note_fr": "logiciel local : tout fonctionne hors-ligne, gratuitement"
          },
          {
            "code": "I1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lucaschess.blogspot.com/",
            "note_fr": "logiciel libre local"
          },
          {
            "code": "I2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lucaschess.pythonanywhere.com/documents",
            "note_fr": "logiciel libre local (pas de partage par lien, mais export libre)"
          },
          {
            "code": "I3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lucaschess.pythonanywhere.com/videos",
            "note_fr": "logiciel libre local"
          },
          {
            "code": "I4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lucaschess.blogspot.com/",
            "note_fr": "logiciel libre local"
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lucaschess.pythonanywhere.com/",
            "note_fr": "classements internes gratuits, aucune mécanique payante"
          },
          {
            "code": "K1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lucaschess.pythonanywhere.com/",
            "note_fr": "export PGN/FNS libre"
          },
          {
            "code": "K2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "K3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/lukasmonk/lucaschessR2",
            "note_fr": "code ouvert GPL-3.0"
          }
        ]
      }
    },
    {
      "slug": "chessbase",
      "name": "ChessBase",
      "url": "https://shop.chessbase.com/en/categories/chessbase",
      "kind": "platform",
      "type": {
        "en": "database and analysis software",
        "fr": "logiciel de base de données et d’analyse"
      },
      "price": {
        "en": "€199.90 one-off purchase (ChessBase '26 program alone, shop.chessbase.com, Nov. 2025) + Premium account €49.90/yr (annual price shown); full Premium Package €499.90. Rule: full offer = €499.90 (purchase + 1 year of Premium).",
        "fr": "199,90 € achat unique (ChessBase '26 programme seul, shop.chessbase.com, nov. 2025) + compte Premium 49,90 €/an (annuel affiché) ; Premium Package complet 499,90 €. Règle : offre complète = 499,90 € (achat + 1 an Premium)."
      },
      "languages": 5,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 4.26,
      "unweighted_score": 4.55,
      "category_scores": {
        "A": 3.3,
        "B": 7.2,
        "C": 3.7,
        "D": 0.8,
        "E": 3.3,
        "F": 7.3,
        "G": 4.2,
        "H": 4.7,
        "I": 6.7,
        "J": 3.3,
        "K": 5.6
      },
      "scores": {
        "A": [
          3,
          1,
          1,
          1,
          1,
          0,
          1,
          0
        ],
        "B": [
          2,
          2,
          1,
          2,
          3,
          3
        ],
        "C": [
          0,
          2,
          1,
          1,
          0,
          2,
          2,
          2,
          0
        ],
        "D": [
          0,
          0,
          1,
          0
        ],
        "E": [
          0,
          0,
          2,
          2
        ],
        "F": [
          2,
          2,
          3,
          1,
          3
        ],
        "G": [
          1,
          1,
          1,
          2
        ],
        "H": [
          2,
          0,
          2,
          0,
          3
        ],
        "I": [
          2,
          2,
          1,
          3
        ],
        "J": [
          2,
          2,
          0,
          0
        ],
        "K": [
          3,
          1,
          1
        ]
      },
      "evidence_urls": {
        "A": [
          "https://shop.chessbase.com/en/products/chessbase_18_starter_package",
          "https://shop.chessbase.com/en/products/chessbase_26_program_only",
          "https://shop.chessbase.com/en/products/chessbase_26_program_only",
          "https://shop.chessbase.com/en/products/chessbase_26_program_only",
          "https://apps.apple.com/us/app/chessbase-mobile-chess/id6739000093",
          "https://shop.chessbase.com/en/products/chessbase_26_program_only",
          "https://shop.chessbase.com/en/products/chessbase_26_program_only",
          "https://shop.chessbase.com/en/products/chessbase_26_program_only"
        ],
        "B": [
          "https://account.chessbase.com/en/matrix",
          "https://apps.apple.com/us/app/chessbase-mobile-chess/id6739000093",
          "https://shop.chessbase.com/en/products/chessbase_26_program_only",
          "https://shop.chessbase.com/en/",
          "https://shop.chessbase.com/en/products/chessbase_18_starter_package",
          "https://shop.chessbase.com/en/products/chessbase_26_program_only"
        ],
        "C": [
          "https://shop.chessbase.com/en/products/chessbase_26_program_only",
          "https://account.chessbase.com/en/matrix",
          "https://shop.chessbase.com/en/products/chessbase_18_premium_package",
          "https://account.chessbase.com/en/matrix",
          "https://account.chessbase.com/en/matrix",
          "https://account.chessbase.com/en/matrix",
          "https://apps.apple.com/us/app/chessbase-mobile-chess/id6739000093",
          "https://apps.apple.com/us/app/chessbase-mobile-chess/id6739000093",
          "https://account.chessbase.com/en/matrix"
        ],
        "D": [
          "https://account.chessbase.com/en/matrix",
          "https://shop.chessbase.com/en/categories/chessbase",
          "https://account.chessbase.com/en/matrix",
          "https://shop.chessbase.com/en/products/chessbase_26_program_only"
        ],
        "E": [
          "https://shop.chessbase.com/en/",
          "https://shop.chessbase.com/en/",
          "https://apps.apple.com/us/app/chessbase-mobile-chess/id6739000093",
          "https://shop.chessbase.com/en/categories/chessbase"
        ],
        "F": [
          "https://shop.chessbase.com/en/products/chessbase_26_program_only",
          "https://shop.chessbase.com/en/",
          "https://account.chessbase.com/en/matrix",
          "https://shop.chessbase.com/en/",
          "https://en.chessbase.com/"
        ],
        "G": [
          "https://account.chessbase.com/en/matrix",
          "https://account.chessbase.com/en/matrix",
          "https://account.chessbase.com/en/matrix",
          "https://play.chessbase.com/en"
        ],
        "H": [
          "https://apps.apple.com/us/app/chessbase-mobile-chess/id6739000093",
          "https://apps.apple.com/us/app/chessbase-mobile-chess/id6739000093",
          "https://shop.chessbase.com/en/products/chessbase_18_starter_package",
          "https://shop.chessbase.com/en/products/chessbase_26_program_only",
          "https://shop.chessbase.com/en/products/chessbase_26_program_only"
        ],
        "I": [
          "https://shop.chessbase.com/en/products/chessbase_18_program_only",
          "https://apps.apple.com/us/app/chessbase-mobile-chess/id6739000093",
          "https://shop.chessbase.com/en/products/chessbase_18_program_only",
          "https://shop.chessbase.com/en/products/chessbase_18_program_only"
        ],
        "J": [
          "https://account.chessbase.com/en/matrix",
          "https://account.chessbase.com/en/matrix",
          "https://account.chessbase.com/en/matrix",
          "https://shop.chessbase.com/en/products/chessbase_18_premium_package"
        ],
        "K": [
          "https://account.chessbase.com/en/matrix",
          "https://en.chessbase.com/pages/security",
          "https://shop.chessbase.com/en/products/chessbase_26_program_only"
        ]
      },
      "sources": [
        "https://en.wikipedia.org/wiki/ChessBase",
        "https://shop.chessbase.com/en/products/chessbase_26_program_only",
        "https://shop.chessbase.com/en/products/chessbase_18_program_only",
        "https://shop.chessbase.com/en/products/fritz_21",
        "https://shop.chessbase.com/en/products/mega_database_2026",
        "https://apps.apple.com/us/app/chessbase-mobile-chess/id6739000093",
        "https://account.chessbase.com/en/matrix"
      ],
      "review_url": "https://www.chesspivot.com/en/reviews/chessbase",
      "free_access": null
    },
    {
      "slug": "lumichess",
      "name": "Lumichess",
      "url": "https://lumichess.com",
      "kind": "platform",
      "type": {
        "en": "free Stockfish reports in the browser",
        "fr": "rapports gratuits Stockfish dans le navigateur"
      },
      "price": {
        "en": "€0 (free, funded by Google AdSense — lumichess.com/privacy; no pricing page, /pricing = 404)",
        "fr": "0 € (gratuit, financé par Google AdSense — lumichess.com/privacy ; aucune page tarifs, /pricing = 404)"
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 4.04,
      "unweighted_score": 3.12,
      "category_scores": {
        "A": 5.4,
        "B": 1.1,
        "C": 3.7,
        "D": 10,
        "E": 4.2,
        "F": 3.3,
        "G": 0,
        "H": 1.3,
        "I": 2.5,
        "J": 1.7,
        "K": 1.1
      },
      "scores": {
        "A": [
          2,
          2,
          1,
          2,
          2,
          0,
          1,
          3
        ],
        "B": [
          0,
          0,
          1,
          0,
          1,
          0
        ],
        "C": [
          2,
          2,
          1,
          0,
          0,
          0,
          2,
          1,
          2
        ],
        "D": [
          3,
          3,
          3,
          3
        ],
        "E": [
          1,
          0,
          2,
          2
        ],
        "F": [
          0,
          1,
          1,
          1,
          2
        ],
        "G": [
          0,
          0,
          0,
          0
        ],
        "H": [
          1,
          0,
          0,
          0,
          1
        ],
        "I": [
          1,
          0,
          0,
          2
        ],
        "J": [
          0,
          0,
          0,
          2
        ],
        "K": [
          0,
          1,
          0
        ]
      },
      "evidence_urls": {
        "A": [
          "https://lumichess.com/game/report",
          "https://lumichess.com/blog/game-report",
          "https://lumichess.com/blog/profile-report",
          "https://lumichess.com/blog/profile-report",
          "https://lumichess.com/blog/game-report",
          "https://lumichess.com/about",
          "https://lumichess.com/insights",
          "https://lumichess.com/blog/profile-report"
        ],
        "B": [
          "https://lumichess.com/sitemap.xml",
          "https://lumichess.com",
          "https://lumichess.com/insights",
          "https://lumichess.com",
          "https://lumichess.com/profile-report",
          "https://lumichess.com"
        ],
        "C": [
          "https://lumichess.com/puzzle/mistakes",
          "https://lumichess.com/puzzles",
          "https://lumichess.com/blog/free-chess-puzzles-woodpecker",
          "https://lumichess.com/puzzles",
          "https://lumichess.com/puzzles",
          "https://lumichess.com/puzzles",
          "https://lumichess.com/puzzles",
          "https://lumichess.com/blog/free-chess-puzzles-woodpecker",
          "https://lumichess.com/blog/profile-report"
        ],
        "D": [
          "https://lumichess.com",
          "https://lumichess.com",
          "https://lumichess.com",
          "https://lumichess.com/blog/profile-report"
        ],
        "E": [
          "https://lumichess.com/about",
          "https://lumichess.com",
          "https://lumichess.com",
          "https://lumichess.com/game/report"
        ],
        "F": [
          "https://lumichess.com/sitemap.xml",
          "https://lumichess.com/about",
          "https://lumichess.com/blog",
          "https://lumichess.com/blog/how-to-review-chess-games",
          "https://lumichess.com/blog"
        ],
        "G": [
          "https://lumichess.com/play/online",
          "https://lumichess.com/play/online",
          "https://lumichess.com/play/online",
          "https://lumichess.com"
        ],
        "H": [
          "https://lumichess.com",
          "https://lumichess.com",
          "https://lumichess.com",
          "https://lumichess.com",
          "https://lumichess.com/blog/game-report"
        ],
        "I": [
          "https://lumichess.com/blog/chess-insights",
          "https://lumichess.com/blog/game-report",
          "https://lumichess.com",
          "https://lumichess.com/blog/chess-insights"
        ],
        "J": [
          "https://lumichess.com/about",
          "https://lumichess.com",
          "https://lumichess.com",
          "https://lumichess.com/puzzles"
        ],
        "K": [
          "https://lumichess.com/privacy",
          "https://lumichess.com/privacy",
          "https://lumichess.com"
        ]
      },
      "sources": [
        "https://lumichess.com/",
        "https://lumichess.com/about",
        "https://lumichess.com/blog",
        "https://lumichess.com/privacy",
        "https://lumichess.com/blog/game-report",
        "https://lumichess.com/blog/profile-report",
        "https://lumichess.com/blog/free-chess-puzzles-woodpecker",
        "https://lumichess.com/blog/chess-insights",
        "https://lumichess.com/blog/how-to-review-chess-games",
        "https://lumichess.com/game/report",
        "https://lumichess.com/insights",
        "https://lumichess.com/sitemap.xml",
        "https://lumichess.com",
        "https://lumichess.com/profile-report",
        "https://lumichess.com/puzzle/mistakes",
        "https://lumichess.com/puzzles",
        "https://lumichess.com/play/online",
        "https://play.google.com",
        "https://github.com/lumichess"
      ],
      "review_url": "https://www.chesspivot.com/en/reviews/lumichess",
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 4.04,
        "criteria": [
          {
            "code": "A1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lumichess.com/",
            "note_fr": "« Free, unlimited Game Reports for Chess.com and Lichess », « without signup »"
          },
          {
            "code": "A2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lumichess.com/blog/game-report",
            "note_fr": "« no daily limit and no premium tier on analysis » ; Stockfish 18 dans le navigateur"
          },
          {
            "code": "A3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lumichess.com/blog/profile-report",
            "note_fr": "Profile Report « free and unlimited »"
          },
          {
            "code": "A4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lumichess.com/blog/profile-report",
            "note_fr": "Profile Report gratuit et illimité"
          },
          {
            "code": "A5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lumichess.com/blog/game-report",
            "note_fr": "commentaires inclus dans le Game Report gratuit illimité"
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A7",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lumichess.com/",
            "note_fr": "Insights gratuits, aucun quota publié"
          },
          {
            "code": "A8",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lumichess.com/blog/profile-report",
            "note_fr": "scores ajustés au classement, dans le Profile Report gratuit"
          },
          {
            "code": "B1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lumichess.com/",
            "note_fr": "Insights gratuits"
          },
          {
            "code": "B4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lumichess.com/blog/profile-report",
            "note_fr": "Profile Report gratuit"
          },
          {
            "code": "B6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lumichess.com/",
            "note_fr": "modes puzzles « completely free with no quotas » (puzzle des propres erreurs inclus)"
          },
          {
            "code": "C2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lumichess.com/puzzles",
            "note_fr": "5 029 552 positions, gratuites sans quota"
          },
          {
            "code": "C3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lumichess.com/",
            "note_fr": "sets thématiques gratuits"
          },
          {
            "code": "C4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C7",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lumichess.com/puzzles",
            "note_fr": "cote Glicko-2 gratuite"
          },
          {
            "code": "C8",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lumichess.com/blog/free-chess-puzzles-woodpecker",
            "note_fr": "cycles Woodpecker gratuits"
          },
          {
            "code": "C9",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lumichess.com/blog/profile-report",
            "note_fr": "étapes suivantes proposées dans le Profile Report gratuit ; NB : « Coach Lumi », futur volet entraînement, annoncé comme payant à sa sortie"
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lumichess.com/",
            "note_fr": "critère informationnel — « Free, unlimited Game Reports », « no daily limit »"
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lumichess.com/",
            "note_fr": "critère informationnel — gratuit, pas de page tarifs"
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lumichess.com/",
            "note_fr": "critère informationnel — rien à résilier ; financé par la publicité"
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lumichess.com/blog/profile-report",
            "note_fr": "critère informationnel — aucun palier payant aujourd’hui"
          },
          {
            "code": "E1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lumichess.com/about",
            "note_fr": "critère informationnel — témoignage public du fondateur"
          },
          {
            "code": "E2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lumichess.com/",
            "note_fr": "critère informationnel — Stockfish 18, Glicko-2 nommés"
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lumichess.com/blog/game-report",
            "note_fr": "critère informationnel"
          },
          {
            "code": "F1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lumichess.com/about",
            "note_fr": "critère informationnel — fondateur nommé"
          },
          {
            "code": "F3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lumichess.com/blog",
            "note_fr": "blog texte public gratuit"
          },
          {
            "code": "F4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lumichess.com/blog/how-to-review-chess-games",
            "note_fr": "critère informationnel — conseils publics"
          },
          {
            "code": "F5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lumichess.com/blog",
            "note_fr": "critère informationnel — billets datés"
          },
          {
            "code": "G1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lumichess.com/",
            "note_fr": "critère informationnel — web seul"
          },
          {
            "code": "H2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lumichess.com/blog/game-report",
            "note_fr": "critère informationnel"
          },
          {
            "code": "I1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lumichess.com/blog/chess-insights",
            "note_fr": "recherche de joueurs FIDE gratuite"
          },
          {
            "code": "I2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lumichess.com/blog/chess-insights",
            "note_fr": "filtres de parties gratuits (Insights gratuits)"
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lumichess.com/puzzles",
            "note_fr": "cote/streak gratuites, sans monnaie"
          },
          {
            "code": "K1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "K2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lumichess.com/privacy",
            "note_fr": "critère informationnel — Vercel/Supabase, AdSense, « We don’t sell »"
          },
          {
            "code": "K3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          }
        ]
      }
    },
    {
      "slug": "chessiverse",
      "name": "Chessiverse",
      "url": "https://chessiverse.com",
      "kind": "platform",
      "type": {
        "en": "Human-like bots, bot tournaments, Chess DNA",
        "fr": "Bots humanisés, tournois contre bots, Chess DNA"
      },
      "price": {
        "en": "$89.99/yr ≈ €83 (annual price shown in the FAQ: monthly $12.99, annual $89.99, lifetime $299; $1 ≈ €0.92)",
        "fr": "89,99 $/an ≈ 83 € (annuel affiché dans la FAQ : mensuel 12,99 $, annuel 89,99 $, à vie 299 $ ; 1 $ ≈ 0,92 €)"
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 3.95,
      "unweighted_score": 3.7,
      "category_scores": {
        "A": 2.9,
        "B": 5,
        "C": 3.7,
        "D": 4.2,
        "E": 3.3,
        "F": 6.7,
        "G": 5,
        "H": 1.3,
        "I": 1.7,
        "J": 2.5,
        "K": 4.4
      },
      "scores": {
        "A": [
          2,
          2,
          1,
          0,
          2,
          0,
          0,
          0
        ],
        "B": [
          1,
          2,
          0,
          2,
          2,
          2
        ],
        "C": [
          0,
          2,
          2,
          2,
          1,
          0,
          1,
          0,
          2
        ],
        "D": [
          2,
          1,
          2,
          0
        ],
        "E": [
          1,
          0,
          2,
          1
        ],
        "F": [
          1,
          2,
          3,
          1,
          3
        ],
        "G": [
          0,
          3,
          1,
          2
        ],
        "H": [
          1,
          0,
          0,
          0,
          1
        ],
        "I": [
          0,
          1,
          0,
          1
        ],
        "J": [
          0,
          1,
          0,
          2
        ],
        "K": [
          2,
          1,
          1
        ]
      },
      "evidence_urls": {
        "A": [
          "https://chessiverse.com",
          "https://chessiverse.com/guided-play",
          "https://chessiverse.com/chess-dna",
          "https://chessiverse.com/chess-dna",
          "https://chessiverse.com/guided-play",
          "https://chessiverse.com/faq",
          "https://chessiverse.com/chess-dna",
          "https://chessiverse.com/chess-dna"
        ],
        "B": [
          "https://chessiverse.com",
          "https://chessiverse.com/chess-practice",
          "https://chessiverse.com/chess-dna",
          "https://chessiverse.com/personaplay",
          "https://chessiverse.com",
          "https://chessiverse.com/chess-practice"
        ],
        "C": [
          "https://chessiverse.com/chess-practice",
          "https://chessiverse.com",
          "https://chessiverse.com/chess-practice",
          "https://chessiverse.com/chess-practice",
          "https://chessiverse.com/faq",
          "https://chessiverse.com/chess-practice",
          "https://chessiverse.com/chess-bot-tournaments",
          "https://chessiverse.com/faq",
          "https://chessiverse.com/faq"
        ],
        "D": [
          "https://chessiverse.com/chess-bot-tournaments",
          "https://chessiverse.com/faq",
          "https://chessiverse.com/faq",
          "https://chessiverse.com"
        ],
        "E": [
          "https://chessiverse.com/blog",
          "https://chessiverse.com/faq",
          "https://chessiverse.com/personaplay",
          "https://chessiverse.com/compare"
        ],
        "F": [
          "https://chessiverse.com/chess-practice",
          "https://chessiverse.com/about-us",
          "https://chessiverse.com/chess-practice",
          "https://chessiverse.com/chess-practice",
          "https://chessiverse.com/blog"
        ],
        "G": [
          "https://chessiverse.com/compare",
          "https://chessiverse.com/personaplay",
          "https://chessiverse.com/faq",
          "https://chessiverse.com/chess-bot-tournaments"
        ],
        "H": [
          "https://chessiverse.com",
          "https://chessiverse.com",
          "https://chessiverse.com",
          "https://chessiverse.com/faq",
          "https://chessiverse.com"
        ],
        "I": [
          "https://chessiverse.com/faq",
          "https://chessiverse.com/faq",
          "https://chessiverse.com/faq",
          "https://chessiverse.com/faq"
        ],
        "J": [
          "https://chessiverse.com",
          "https://chessiverse.com/blog",
          "https://chessiverse.com/faq",
          "https://chessiverse.com/chess-bot-tournaments"
        ],
        "K": [
          "https://chessiverse.com/faq",
          "https://chessiverse.com/privacypolicy",
          "https://chessiverse.com/faq"
        ]
      },
      "sources": [
        "https://chessiverse.com/",
        "https://chessiverse.com/about-us",
        "https://chessiverse.com/blog",
        "https://chessiverse.com/privacypolicy",
        "https://chessiverse.com/faq"
      ],
      "review_url": "https://www.chesspivot.com/en/reviews/chessiverse",
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 3.78,
        "criteria": [
          {
            "code": "A1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessiverse.com/faq",
            "note_fr": "FAQ « Can I analyse a game I played somewhere else? — Yes… paste a full PGN to analyse the whole game » ; aucune restriction Premium documentée (import par collage PGN/FEN, pas par URL)."
          },
          {
            "code": "A2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessiverse.com/faq",
            "note_fr": "FAQ : le moteur d’analyse tourne localement dans le navigateur (« The engine runs locally in your browser ») ; analyse post-partie sans gate Premium."
          },
          {
            "code": "A3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessiverse.com/faq",
            "note_fr": "Chess DNA décrit dans la FAQ sans restriction ; absent de la liste de ce que « Premium adds » dans « What’s the difference between Free and Premium? »."
          },
          {
            "code": "A4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessiverse.com/faq",
            "note_fr": "FAQ : « Logged-in users also get Chess Coach » (Review the Move, badge de qualité) — compte gratuit requis = gratuit."
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessiverse.com/faq",
            "note_fr": "Guides d’ouverture publics sous /resources/openings (FAQ « Where do I find Chessiverse’s articles? … The opening library is at /resources/openings ») ; « Play this opening » depuis le 1er coup = Premium."
          },
          {
            "code": "B2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessiverse.com/faq",
            "note_fr": "FAQ Free vs Premium : « Both tiers get unlimited games, rated or casual play, all time controls, Guided Play, Tournaments, and Weekly Challenges. The free tier limits you to the free-tier bots for play, practice, and puzzles. » — la pratique avec les bots gratuits est incluse ; « Play any opening from move 1 » (550+ ouvertures) est Premium."
          },
          {
            "code": "B3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessiverse.com/personaplay",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques). Sourçage des livres d’ouverture publié sur la page PersonaPlay."
          },
          {
            "code": "B5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessiverse.com/faq",
            "note_fr": "Guides d’ouverture avec statistiques = pages publiques (/resources/openings), lisibles sans compte ni abonnement."
          },
          {
            "code": "B6",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessiverse.com/faq",
            "note_fr": "Guides écrits publics ; en revanche les cours vidéo s’achètent à part (FAQ : « When you own a course… », Premium donne des « Course discounts »)."
          },
          {
            "code": "C1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessiverse.com/faq",
            "note_fr": "FAQ : « Free accounts get puzzles built around the free-tier bots; premium unlocks puzzles built around any of the 1000+ bots » — aucun quota journalier, périmètre réduit en gratuit."
          },
          {
            "code": "C3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessiverse.com/faq",
            "note_fr": "« Both tiers get unlimited games, rated or casual play, all time controls, Guided Play, Tournaments, and Weekly Challenges. The free tier limits you to the free-tier bots for play, practice, and puzzles. » — practice inclus en gratuit avec les bots gratuits (positions Endgame Mastery jouées contre bots)."
          },
          {
            "code": "C4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessiverse.com/faq",
            "note_fr": "Même base que C3 : la pratique (positions de milieu de partie contre bots) est couverte par le volet gratuit « play, practice, and puzzles » avec les free-tier bots."
          },
          {
            "code": "C5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessiverse.com/faq",
            "note_fr": "Le blunder guard et le coaching sur l’échiquier font partie de Guided Play, listé dans « Both tiers get … Guided Play »."
          },
          {
            "code": "C6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C7",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessiverse.com/faq",
            "note_fr": "Tournois gratuits (« Both tiers get … Tournaments ») avec « fields built around your rating » ; les puzzles gratuits se filtrent par difficulté (Elo range)."
          },
          {
            "code": "C8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C9",
            "status": "paid",
            "quota": null,
            "source_url": "https://chessiverse.com/faq",
            "note_fr": "Les « course study plans » exigent de posséder un cours (« When you own a course… ») — cours achetés à part ; Daily Matchup est Premium. Seuls les Daily Achievements sont libres."
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessiverse.com/faq",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques). Périmètre gratuit documenté par la FAQ (« What’s the difference between Free and Premium? »)."
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessiverse.com/faq",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques). « Yearly — $89.99/year » publié dans la FAQ."
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessiverse.com/faq",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques). Prix, « 7-day free trial » et « cancel anytime » publiés."
          },
          {
            "code": "D4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessiverse.com/blog",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques)."
          },
          {
            "code": "E2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessiverse.com/personaplay",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques)."
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessiverse.com/compare",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques)."
          },
          {
            "code": "F1",
            "status": "paid",
            "quota": null,
            "source_url": "https://chessiverse.com/faq",
            "note_fr": "Les cours (vidéo + bots dédiés) s’achètent (« When you own a course », « Course discounts » en Premium) — le contenu de cours n’est pas dans le tier gratuit."
          },
          {
            "code": "F2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessiverse.com/about-us",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques)."
          },
          {
            "code": "F3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessiverse.com/faq",
            "note_fr": "Formats accessibles en gratuit : guides texte publics + entraînement interactif (practice/puzzles avec bots gratuits) ; les « Exclusive videos » sont Premium et les cours vidéo payants."
          },
          {
            "code": "F4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessiverse.com/chess-practice",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques)."
          },
          {
            "code": "F5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessiverse.com/blog",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques). Blog public."
          },
          {
            "code": "G1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessiverse.com/faq",
            "note_fr": "« unlimited games » en gratuit, mais « The free tier limits you to the free-tier bots » — roster réduit ; les 1000+ bots sont Premium."
          },
          {
            "code": "G3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessiverse.com/faq",
            "note_fr": "FAQ : « Can I save and reuse custom positions? — Yes » ; partie guidée « from a custom position » sans mention Premium (avec les bots gratuits)."
          },
          {
            "code": "G4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessiverse.com/faq",
            "note_fr": "« Both tiers get … Tournaments » (daily/weekly/monthly officiels + builder) ; seule la simulation est bridée : « Free accounts can run one simulated bot game per tournament »."
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessiverse.com/",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques)."
          },
          {
            "code": "H2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessiverse.com/",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques). Service web, pas de mode hors-ligne quel que soit le plan."
          },
          {
            "code": "I1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessiverse.com/faq",
            "note_fr": "Bouton « Analyze & Share » post-partie, what-ifs et « Save as training PGN » décrits sans gate Premium."
          },
          {
            "code": "I3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessiverse.com/faq",
            "note_fr": "FAQ : « Can I filter my game history? — Yes » ; historique + export sans mention Premium."
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessiverse.com/blog",
            "note_fr": "Discord libre d’accès ; seul le « Discord premium group » est réservé Premium (FAQ)."
          },
          {
            "code": "J3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessiverse.com/faq",
            "note_fr": "Daily Achievements décrits sans gate ; Daily Challenges/Speedrun (streaks avancés) sont Premium."
          },
          {
            "code": "K1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessiverse.com/faq",
            "note_fr": "FAQ : « Can I export my games? — Yes… Export all games as PGN » sans mention Premium."
          },
          {
            "code": "K2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessiverse.com/privacypolicy",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques)."
          },
          {
            "code": "K3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessiverse.com/faq",
            "note_fr": "Import/export PGN accessibles en gratuit ; aucune API publique (constat du brief), rien de gaté par le plan."
          }
        ]
      }
    },
    {
      "slug": "chessable",
      "name": "Chessable",
      "url": "https://www.chessable.com/",
      "kind": "platform",
      "type": {
        "en": "interactive spaced-repetition courses",
        "fr": "cours interactifs à répétition espacée"
      },
      "price": {
        "en": "PRO $74.99/yr ≈ €69 ($11.99/mo) — read by hand on /pro, 2026-09-01.",
        "fr": "PRO 74,99 $/an ≈ 69 € (11,99 $/mois) — relevé à la main sur /pro le 01/09/2026."
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 3.82,
      "unweighted_score": 3.3,
      "category_scores": {
        "A": 0.8,
        "B": 5.6,
        "C": 5.2,
        "D": 4.2,
        "E": 2.5,
        "F": 8,
        "G": 1.7,
        "H": 4.7,
        "I": 0,
        "J": 2.5,
        "K": 1.1
      },
      "scores": {
        "A": [
          2,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          2,
          3,
          2,
          1,
          0,
          2
        ],
        "C": [
          0,
          1,
          2,
          3,
          2,
          2,
          0,
          2,
          2
        ],
        "D": [
          2,
          2,
          1,
          0
        ],
        "E": [
          1,
          0,
          1,
          1
        ],
        "F": [
          2,
          3,
          3,
          1,
          3
        ],
        "G": [
          0,
          1,
          1,
          0
        ],
        "H": [
          3,
          3,
          0,
          0,
          1
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          0,
          1,
          0,
          2
        ],
        "K": [
          0,
          1,
          0
        ]
      },
      "evidence_urls": {
        "A": [
          "https://www.chessable.com/blog/",
          "https://www.chessable.com/",
          "https://www.chessable.com/",
          "https://www.chessable.com/",
          "https://www.chessable.com/",
          "https://www.chessable.com/",
          "https://www.chessable.com/",
          "https://www.chessable.com/"
        ],
        "B": [
          "https://www.chessable.com/blog/?s=chessable+pro",
          "https://www.chessable.com/blog/",
          "https://www.chessable.com/blog/",
          "https://www.chessable.com/",
          "https://www.chessable.com/",
          "https://www.chessable.com/"
        ],
        "C": [
          "https://www.chessable.com/",
          "https://www.chessable.com/",
          "https://www.chessable.com/",
          "https://www.chessable.com/",
          "https://www.chessable.com/",
          "https://www.chessable.com/",
          "https://www.chessable.com/",
          "https://www.chessable.com/",
          "https://www.chessable.com/"
        ],
        "D": [
          "https://www.chessable.com/",
          "https://www.chessable.com/pro",
          "https://www.chessable.com/blog/chessable-discounts-return-to-2024-system-pro-discount-now-30/",
          "https://www.chessable.com/"
        ],
        "E": [
          "https://www.chessable.com/",
          "https://www.chessable.com/",
          "https://www.chessable.com/",
          "https://www.chessable.com/"
        ],
        "F": [
          "https://www.chessable.com/",
          "https://www.chessable.com/",
          "https://www.chessable.com/",
          "https://www.chessable.com/",
          "https://www.chessable.com/blog/"
        ],
        "G": [
          "https://www.chessable.com/",
          "https://www.chessable.com/blog/",
          "https://www.chessable.com/blog/",
          "https://www.chessable.com/"
        ],
        "H": [
          "https://play.google.com/store/apps/details?id=com.chessable.chessable",
          "https://play.google.com/store/apps/details?id=com.chessable.chessable",
          "https://www.chessable.com/",
          "https://www.chessable.com/blog/chessable-pro-price-changes/"
        ],
        "I": [
          "https://www.chessable.com/",
          "https://www.chessable.com/",
          "https://www.chessable.com/",
          "https://www.chessable.com/"
        ],
        "J": [
          "https://www.chessable.com/",
          "https://www.chessable.com/blog/?s=chessable+pro",
          "https://www.chessable.com/",
          "https://play.google.com/store/apps/details?id=com.chessable.chessable"
        ],
        "K": [
          "https://www.chessable.com/",
          "https://play.google.com/store/apps/details?id=com.chessable.chessable",
          "https://www.chessable.com/"
        ]
      },
      "sources": [
        "https://en.wikipedia.org/wiki/John_Bartholomew_(chess_player)",
        "https://en.wikipedia.org/wiki/Play_Magnus_Group",
        "https://en.wikipedia.org/wiki/Chessable",
        "https://apps.apple.com/us/app/chessable-study-chess-smarter/id1523279049",
        "https://apps.apple.com/us/app/id1523279049"
      ],
      "review_url": "https://www.chesspivot.com/en/reviews/chessable",
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 2.82,
        "criteria": [
          {
            "code": "A1",
            "status": "undocumented",
            "quota": null,
            "source_url": null,
            "note_fr": "Le « Game Review Course Check » tourne côté Chess.com après export des cours (https://www.chessable.com/blog/check-your-opening-play-with-game-review-course-check/) ; les pages Chessable ne publient pas le statut gratuit de ce contrôle (le quota de Game Review relève de Chess.com)."
          },
          {
            "code": "A2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessable.com/blog/chessables-new-repertoire-feature-turns-you-from-active-learner-to-architect-of-your-chess-growth/",
            "note_fr": "La fonction Repertoire (cours personnalisé composé de lignes/chapitres) est annoncée pour tous, sans mention PRO ; elle se nourrit des cours possédés (gratuits inclus)."
          },
          {
            "code": "B2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://support.chessable.com/en/articles/9016006-are-chessable-accounts-really-free",
            "note_fr": "« all our essential features, including MoveTrainer®, are free to use » ; « Train Against Bots » : « it’s free for everyone. All you need is a Chess.com account » (https://www.chessable.com/blog/train-against-bots-the-highly-requested-feature-is-here/)."
          },
          {
            "code": "B3",
            "status": "undocumented",
            "quota": null,
            "source_url": null,
            "note_fr": "Même mécanisme que A1 : Course Check est une fonction Chess.com utilisée via l’outil d’export ; statut gratuit non établi sur les pages Chessable."
          },
          {
            "code": "B4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessable.com/",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques). (auteurs titrés visibles sur les pages de cours publiques)."
          },
          {
            "code": "B5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B6",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://support.chessable.com/en/articles/9016006-are-chessable-accounts-really-free",
            "note_fr": "« We offer a selection of free courses » — des cours d’ouverture gratuits existent et se travaillent avec MoveTrainer gratuit ; l’essentiel du catalogue reste des achats (« premium purchasable MoveTrainer® courses »)."
          },
          {
            "code": "C1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C2",
            "status": "paid",
            "quota": null,
            "source_url": "https://support.chessable.com/en/articles/9016006-are-chessable-accounts-really-free",
            "note_fr": "Les cours de tactique cités (Woodpecker Method, Calculation Workbook) sont des « premium purchasable MoveTrainer® courses » — achats individuels ; la sélection gratuite n’en documente pas d’équivalent chiffré."
          },
          {
            "code": "C3",
            "status": "paid",
            "quota": null,
            "source_url": "https://support.chessable.com/en/articles/9016006-are-chessable-accounts-really-free",
            "note_fr": "« 100 Endgames You Must Know » est un cours payant (achat individuel) ; cf. « premium purchasable MoveTrainer® courses »."
          },
          {
            "code": "C4",
            "status": "paid",
            "quota": null,
            "source_url": "https://support.chessable.com/en/articles/9016006-are-chessable-accounts-really-free",
            "note_fr": "Les cours de stratégie cités (Chess Structures, Techniques of Positional Play…) sont des achats individuels."
          },
          {
            "code": "C5",
            "status": "paid",
            "quota": null,
            "source_url": "https://support.chessable.com/en/articles/9016006-are-chessable-accounts-really-free",
            "note_fr": "« Preventing Blunders in Chess » est un cours du catalogue (achat individuel) ; aucun équivalent gratuit documenté."
          },
          {
            "code": "C6",
            "status": "paid",
            "quota": null,
            "source_url": "https://support.chessable.com/en/articles/9016006-are-chessable-accounts-really-free",
            "note_fr": "Les cours de calcul cités (Shankland’s Calculation Workbook…) sont des achats individuels."
          },
          {
            "code": "C7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C8",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://support.chessable.com/en/articles/9016006-are-chessable-accounts-really-free",
            "note_fr": "La répétition espacée est le cœur de MoveTrainer® : « all our essential features, including MoveTrainer®, are free to use »."
          },
          {
            "code": "C9",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessable.com/blog/some-pro-features-now-available-to-all-members/",
            "note_fr": "L’« Advanced time planner » (planification de la charge de révision) et le « Difficult move tracking » sont passés gratuits pour tous en avril 2026 : « Now, all members have the advanced time planner widget »."
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://support.chessable.com/en/articles/9016006-are-chessable-accounts-really-free",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques). « Signing up to Chessable is 100% free and will always remain so. »"
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessable.com/pro/",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques)."
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://support.chessable.com/en/articles/9016006-are-chessable-accounts-really-free",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques). (garantie 30 jours documentée dans le centre d’aide)."
          },
          {
            "code": "D4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessable.com/",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques)."
          },
          {
            "code": "E2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessable.com/",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques)."
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessable.com/",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques)."
          },
          {
            "code": "F1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessable.com/",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques). (catalogue et filtres consultables sans payer)."
          },
          {
            "code": "F2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessable.com/",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques)."
          },
          {
            "code": "F3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://support.chessable.com/en/articles/9016006-are-chessable-accounts-really-free",
            "note_fr": "Formats accessibles en gratuit : cours gratuits (texte + interactif MoveTrainer) ; la vidéo est surtout dans les cours achetés et le contenu PRO-exclusif."
          },
          {
            "code": "F4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessable.com/",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques)."
          },
          {
            "code": "F5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessable.com/blog/",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques). Blog public."
          },
          {
            "code": "G1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessable.com/blog/train-against-bots-the-highly-requested-feature-is-here/",
            "note_fr": "« It’s one of our most requested features ever, and it’s free for everyone. All you need is a Chess.com account. » (bots 250-3200 Elo)."
          },
          {
            "code": "G3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessable.com/blog/train-against-bots-the-highly-requested-feature-is-here/",
            "note_fr": "« you can now play out any position from a Chessable course against a Chess.com bot » — gratuit pour tous (compte Chess.com gratuit requis)."
          },
          {
            "code": "G4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://play.google.com/store/apps/details?id=com.chessable.chessable",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques)."
          },
          {
            "code": "H2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://play.google.com/store/apps/details?id=com.chessable.chessable",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques)."
          },
          {
            "code": "H3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H5",
            "status": "paid",
            "quota": null,
            "source_url": "https://www.chessable.com/blog/some-pro-features-now-available-to-all-members/",
            "note_fr": "Le mode hors-ligne est explicitement une fonction PRO : « special features such as Offline Mode » restent dans l’offre PRO."
          },
          {
            "code": "I1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessable.com/",
            "note_fr": "Forums de discussion et Product Portal publics, accessibles avec le compte gratuit."
          },
          {
            "code": "J3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://play.google.com/store/apps/details?id=com.chessable.chessable",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques). Aucune monnaie virtuelle constatée."
          },
          {
            "code": "K1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "K2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://play.google.com/store/apps/details?id=com.chessable.chessable",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques)."
          },
          {
            "code": "K3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          }
        ]
      }
    },
    {
      "slug": "chessbook",
      "name": "Chessbook",
      "url": "https://www.chessbook.com/",
      "kind": "platform",
      "type": {
        "en": "opening repertoire builder",
        "fr": "constructeur de répertoire d’ouvertures"
      },
      "price": {
        "en": "$79.99/yr (annual price shown on the App Store listing; $7.99/mo) ≈ €73.59",
        "fr": "79,99 $/an (annuel affiché sur la fiche App Store ; 7,99 $/mois) ≈ 73,59 €"
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 3.81,
      "unweighted_score": 3.1,
      "category_scores": {
        "A": 2.1,
        "B": 7.8,
        "C": 1.9,
        "D": 7.5,
        "E": 2.5,
        "F": 0.7,
        "G": 0,
        "H": 4.7,
        "I": 0,
        "J": 2.5,
        "K": 4.4
      },
      "scores": {
        "A": [
          2,
          1,
          1,
          1,
          0,
          0,
          0,
          0
        ],
        "B": [
          3,
          2,
          2,
          2,
          3,
          2
        ],
        "C": [
          0,
          0,
          0,
          1,
          0,
          0,
          0,
          2,
          2
        ],
        "D": [
          2,
          2,
          2,
          3
        ],
        "E": [
          1,
          0,
          1,
          1
        ],
        "F": [
          0,
          0,
          0,
          0,
          1
        ],
        "G": [
          0,
          0,
          0,
          0
        ],
        "H": [
          3,
          3,
          0,
          0,
          1
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          0,
          0,
          0,
          3
        ],
        "K": [
          2,
          1,
          1
        ]
      },
      "evidence_urls": {
        "A": [
          "https://apps.apple.com/us/app/chessbook-master-openings/id6466343415",
          "https://apps.apple.com/us/app/chessbook-master-openings/id6466343415",
          "https://www.chessbook.com/",
          "https://apps.apple.com/us/app/chessbook-master-openings/id6466343415",
          "https://apps.apple.com/us/app/chessbook-master-openings/id6466343415",
          "https://www.chessbook.com/",
          "https://www.chessbook.com/",
          "https://apps.apple.com/us/app/chessbook-master-openings/id6466343415"
        ],
        "B": [
          "https://apps.apple.com/us/app/chessbook-master-openings/id6466343415",
          "https://apps.apple.com/us/app/chessbook-master-openings/id6466343415",
          "https://apps.apple.com/us/app/chessbook-master-openings/id6466343415",
          "https://apps.apple.com/us/app/chessbook-master-openings/id6466343415",
          "https://apps.apple.com/us/app/chessbook-master-openings/id6466343415",
          "https://apps.apple.com/us/app/chessbook-master-openings/id6466343415"
        ],
        "C": [
          "https://apps.apple.com/us/app/chessbook-master-openings/id6466343415",
          "https://apps.apple.com/us/app/chessbook-master-openings/id6466343415",
          "https://apps.apple.com/us/app/chessbook-master-openings/id6466343415",
          "https://apps.apple.com/us/app/chessbook-master-openings/id6466343415",
          "https://apps.apple.com/us/app/chessbook-master-openings/id6466343415",
          "https://apps.apple.com/us/app/chessbook-master-openings/id6466343415",
          "https://apps.apple.com/us/app/chessbook-master-openings/id6466343415",
          "https://www.chessbook.com/",
          "https://apps.apple.com/us/app/chessbook-master-openings/id6466343415"
        ],
        "D": [
          "https://apps.apple.com/us/app/chessbook-master-openings/id6466343415",
          "https://apps.apple.com/us/app/chessbook-master-openings/id6466343415",
          "https://apps.apple.com/us/app/chessbook-master-openings/id6466343415",
          "https://apps.apple.com/us/app/chessbook-master-openings/id6466343415"
        ],
        "E": [
          "https://apps.apple.com/us/app/chessbook-master-openings/id6466343415",
          "https://apps.apple.com/us/app/chessbook-master-openings/id6466343415",
          "https://apps.apple.com/us/app/chessbook-master-openings/id6466343415",
          "https://apps.apple.com/us/app/chessbook-master-openings/id6466343415"
        ],
        "F": [
          "https://apps.apple.com/us/app/chessbook-master-openings/id6466343415",
          "https://www.chessbook.com/",
          "https://apps.apple.com/us/app/chessbook-master-openings/id6466343415",
          "https://www.chessbook.com/",
          "https://apps.apple.com/us/app/chessbook-master-openings/id6466343415"
        ],
        "G": [
          "https://apps.apple.com/us/app/chessbook-master-openings/id6466343415",
          "https://apps.apple.com/us/app/chessbook-master-openings/id6466343415",
          "https://apps.apple.com/us/app/chessbook-master-openings/id6466343415",
          "https://apps.apple.com/us/app/chessbook-master-openings/id6466343415"
        ],
        "H": [
          "https://www.chessbook.com/",
          "https://apps.apple.com/us/app/chessbook-master-openings/id6466343415",
          "https://apps.apple.com/us/app/chessbook-master-openings/id6466343415",
          "https://www.chessbook.com/",
          "https://www.chessbook.com/"
        ],
        "I": [
          "https://apps.apple.com/us/app/chessbook-master-openings/id6466343415",
          "https://www.chessbook.com/",
          "https://apps.apple.com/us/app/chessbook-master-openings/id6466343415",
          "https://apps.apple.com/us/app/chessbook-master-openings/id6466343415"
        ],
        "J": [
          "https://www.chessbook.com/",
          "https://www.chessbook.com/",
          "https://www.chessbook.com/",
          "https://apps.apple.com/us/app/chessbook-master-openings/id6466343415"
        ],
        "K": [
          "https://apps.apple.com/us/app/chessbook-master-openings/id6466343415",
          "https://apps.apple.com/us/app/chessbook-master-openings/id6466343415",
          "https://apps.apple.com/us/app/chessbook-master-openings/id6466343415"
        ]
      },
      "sources": [
        "https://apps.apple.com/us/app/chessbook-master-openings/id6466343415",
        "https://www.chessbook.com/",
        "https://www.chessbook.com/privacy"
      ],
      "review_url": "https://www.chesspivot.com/en/reviews/chessbook",
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 3.7,
        "criteria": [
          {
            "code": "A1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessbook.com/",
            "note_fr": "Seule limite publiée du plan gratuit : le plafond de coups du répertoire (« Build a repertoire of up to 200 moves ») ; l’intégration Lichess/Chess.com n’est gatée nulle part."
          },
          {
            "code": "A2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessbook.com/",
            "note_fr": "Évaluation moteur par position non gatée ; la page tarifs ne distingue les plans que par le plafond de coups."
          },
          {
            "code": "A3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessbook.com/",
            "note_fr": "« automatic gap detection » présenté comme fonction du produit ; aucune restriction de plan publiée hors plafond de coups."
          },
          {
            "code": "A4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/chessbook-master-openings/id6466343415",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques). Un seul axe (ouvertures), identique quel que soit le plan."
          },
          {
            "code": "A5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B1",
            "status": "quota-real",
            "quota": "Starter — forever — “Build a repertoire of up to 200 moves.” / Pro : “Add unlimited moves to any depth.”",
            "source_url": "https://www.chessbook.com/",
            "note_fr": "Plafond de capacité, pas de quota journalier ; la fiche App Store dit encore « Free users can add 400 moves » (les deux chiffres publiés divergent, retenu le site)."
          },
          {
            "code": "B2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessbook.com/",
            "note_fr": "Drill + répétition espacée sans quota journalier publié ; l’entraînement porte sur le répertoire plafonné à 200 coups en gratuit."
          },
          {
            "code": "B3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/chessbook-master-openings/id6466343415",
            "note_fr": "Repérage des trous via l’import de parties, non gaté ; seule borne = plafond du répertoire gratuit."
          },
          {
            "code": "B4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/chessbook-master-openings/id6466343415",
            "note_fr": "« engine evaluation and statistics from master games » — non gaté par plan."
          },
          {
            "code": "B5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/chessbook-master-openings/id6466343415",
            "note_fr": "Explorateur (base de maîtres + stats par ELO + ses parties) non gaté par plan."
          },
          {
            "code": "B6",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/chessbook-master-openings/id6466343415",
            "note_fr": "« middlegame planning insights » non gatés par plan."
          },
          {
            "code": "C1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/chessbook-master-openings/id6466343415",
            "note_fr": "« Learn middlegame plans for any opening » — lecture non gatée."
          },
          {
            "code": "C5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C8",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessbook.com/",
            "note_fr": "Répétition espacée incluse ; aucun quota publié (borne indirecte : répertoire 200 coups en gratuit)."
          },
          {
            "code": "C9",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessbook.com/",
            "note_fr": "File de révisions dues par répétition espacée, même mécanique pour tous les plans."
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessbook.com/",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques). Starter « forever », « No signup required »."
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/chessbook-master-openings/id6466343415",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques). « Chessbook Pro - Annual $79.99 »."
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessbook.com/",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques). Prix affichés, « No signup required, cancel anytime »."
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessbook.com/",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques). Un seul palier Pro."
          },
          {
            "code": "E1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/chessbook-master-openings/id6466343415",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques)."
          },
          {
            "code": "E2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/chessbook-master-openings/id6466343415",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques)."
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/chessbook-master-openings/id6466343415",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques)."
          },
          {
            "code": "F1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/chessbook-master-openings/id6466343415",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques)."
          },
          {
            "code": "G1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessbook.com/",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques). Web + iOS + Android."
          },
          {
            "code": "H2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/chessbook-master-openings/id6466343415",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques)."
          },
          {
            "code": "H3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessbook.com/",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques). Service en ligne, pas de mode hors-ligne documenté quel que soit le plan."
          },
          {
            "code": "I1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/chessbook-master-openings/id6466343415",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques). Aucun classement ni série."
          },
          {
            "code": "K1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/chessbook-master-openings/id6466343415",
            "note_fr": "Export PGN du répertoire mentionné sur la fiche store, non gaté par plan."
          },
          {
            "code": "K2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/chessbook-master-openings/id6466343415",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques)."
          },
          {
            "code": "K3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/chessbook-master-openings/id6466343415",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques). PGN seulement."
          }
        ]
      }
    },
    {
      "slug": "chessalyz-ai",
      "name": "Chessalyz.ai",
      "url": "https://chessalyz.ai/",
      "kind": "platform",
      "type": {
        "en": "AI-guided analysis, repertoire, flashcards",
        "fr": "Analyse guidée IA, répertoire, flashcards"
      },
      "price": {
        "en": "Gold $9.99/mo × 12 = $119.88 ≈ €110 ($1 ≈ €0.92); the \"35% off\" annual price is not readable without JS; Platinum (unlimited quotas) $25/mo = $300 ≈ €276",
        "fr": "Gold 9,99 $/mois × 12 = 119,88 $ ≈ 110 € (1 $ ≈ 0,92 €) ; l’annuel « 35 % off » n’est pas lisible sans JS ; Platinum (quotas illimités) 25 $/mois = 300 $ ≈ 276 €"
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 3.8,
      "unweighted_score": 3.15,
      "category_scores": {
        "A": 3.3,
        "B": 5.6,
        "C": 4.4,
        "D": 5,
        "E": 3.3,
        "F": 2.7,
        "G": 0,
        "H": 1.3,
        "I": 3.3,
        "J": 2.5,
        "K": 3.3
      },
      "scores": {
        "A": [
          3,
          2,
          1,
          0,
          2,
          0,
          0,
          0
        ],
        "B": [
          2,
          2,
          2,
          2,
          1,
          1
        ],
        "C": [
          2,
          1,
          1,
          0,
          2,
          0,
          2,
          2,
          2
        ],
        "D": [
          2,
          1,
          2,
          1
        ],
        "E": [
          1,
          0,
          1,
          2
        ],
        "F": [
          0,
          2,
          1,
          0,
          1
        ],
        "G": [
          0,
          0,
          0,
          0
        ],
        "H": [
          1,
          0,
          0,
          0,
          1
        ],
        "I": [
          0,
          1,
          1,
          2
        ],
        "J": [
          0,
          0,
          1,
          2
        ],
        "K": [
          1,
          1,
          1
        ]
      },
      "evidence_urls": {
        "A": [
          "https://chessalyz.ai/",
          "https://chessalyz.ai/",
          "https://chessalyz.ai/openings",
          "https://chessalyz.ai/",
          "https://chessalyz.ai/",
          "https://chessalyz.ai/about",
          "https://chessalyz.ai/",
          "https://chessalyz.ai/"
        ],
        "B": [
          "https://chessalyz.ai/openings",
          "https://chessalyz.ai/",
          "https://chessalyz.ai/openings",
          "https://chessalyz.ai/openings",
          "https://chessalyz.ai/openings",
          "https://chessalyz.ai/openings"
        ],
        "C": [
          "https://chessalyz.ai/flashcards",
          "https://chessalyz.ai/",
          "https://chessalyz.ai/",
          "https://chessalyz.ai/",
          "https://chessalyz.ai/",
          "https://chessalyz.ai/",
          "https://chessalyz.ai/",
          "https://chessalyz.ai/flashcards",
          "https://chessalyz.ai/flashcards"
        ],
        "D": [
          "https://chessalyz.ai/",
          "https://chessalyz.ai/",
          "https://chessalyz.ai/terms",
          "https://chessalyz.ai/pricing"
        ],
        "E": [
          "https://chessalyz.ai/testimonials",
          "https://chessalyz.ai/about",
          "https://chessalyz.ai/about",
          "https://chessalyz.ai/"
        ],
        "F": [
          "https://chessalyz.ai/",
          "https://chessalyz.ai/about",
          "https://chessalyz.ai/",
          "https://chessalyz.ai/",
          "https://chessalyz.ai/"
        ],
        "G": [
          "https://chessalyz.ai/",
          "https://chessalyz.ai/",
          "https://chessalyz.ai/",
          "https://chessalyz.ai/"
        ],
        "H": [
          "https://chessalyz.ai/",
          "https://chessalyz.ai/testimonials",
          "https://chessalyz.ai/",
          "https://chessalyz.ai/",
          "https://chessalyz.ai/"
        ],
        "I": [
          "https://chessalyz.ai/openings",
          "https://chessalyz.ai/openings",
          "https://chessalyz.ai/",
          "https://chessalyz.ai/"
        ],
        "J": [
          "https://chessalyz.ai/",
          "https://chessalyz.ai/testimonials",
          "https://chessalyz.ai/",
          "https://chessalyz.ai/flashcards"
        ],
        "K": [
          "https://chessalyz.ai/privacy",
          "https://chessalyz.ai/privacy",
          "https://chessalyz.ai/"
        ]
      },
      "sources": [
        "https://chessalyz.ai/",
        "https://chessalyz.ai/openings",
        "https://chessalyz.ai/about",
        "https://chessalyz.ai/flashcards",
        "https://chessalyz.ai/terms",
        "https://chessalyz.ai/pricing",
        "https://chessalyz.ai/testimonials",
        "https://chessalyz.ai/privacy",
        "https://www.chess.com/blog/MattyDPerrine/you-cant-improve-alone-my-2025-chess-year-in-review",
        "https://medium.com/@bit.varun/chessalyz-making-chess-game-analysis-fun-65d24e9ab43b",
        "https://chesschatter.substack.com/p/chessalyz-opening-repertoire-explorer-update",
        "https://www.chess.com/forum/view/game-analysis/what-is-your-experience-with-chessalyz",
        "https://daltonperrine.com/chessalyz/",
        "https://www.chess.com/blog/MattyDPerrine/you-asked-we-built-whats-new-in-chessalyz-spring-2026-updates"
      ],
      "review_url": "https://www.chesspivot.com/en/reviews/chessalyz-ai",
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 2.81,
        "criteria": [
          {
            "code": "A1",
            "status": "quota-real",
            "quota": "“Game sync: last 1 year of history” ; “PGN file upload” ; “1,000 games storage” (plan Basic $0)",
            "source_url": "https://chessalyz.ai/",
            "note_fr": "Import/synchro inclus en gratuit ; bornes de capacité (1 an d’historique, 1 000 parties), pas de quota journalier."
          },
          {
            "code": "A2",
            "status": "quota-symbolic",
            "quota": "“5 analyses per month” (plan Basic $0)",
            "source_url": "https://chessalyz.ai/pricing",
            "note_fr": "5 analyses par mois ≪ 1 analyse/jour — sous la frontière D1."
          },
          {
            "code": "A3",
            "status": "quota-symbolic",
            "quota": "“5 analyses per month” (plan Basic $0)",
            "source_url": "https://chessalyz.ai/pricing",
            "note_fr": "Le score par position se calcule sur les parties analysées, elles-mêmes limitées à 5/mois en Basic."
          },
          {
            "code": "A4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A5",
            "status": "quota-symbolic",
            "quota": "“5 analyses per month” (plan Basic $0)",
            "source_url": "https://chessalyz.ai/pricing",
            "note_fr": "Les questions guidées font partie de l’analyse d’une partie — bornées par les 5 analyses/mois."
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B1",
            "status": "quota-real",
            "quota": "“Opening Repertoire (50 positions)” (plan Basic $0)",
            "source_url": "https://chessalyz.ai/",
            "note_fr": "Plafond de capacité bas (50 positions) mais éditable et utilisable au quotidien."
          },
          {
            "code": "B2",
            "status": "quota-real",
            "quota": "“Opening Practice: 60 positions/day” (plan Basic $0)",
            "source_url": "https://chessalyz.ai/",
            "note_fr": "60 positions/jour ≥ 5 usages/jour."
          },
          {
            "code": "B3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessalyz.ai/openings",
            "note_fr": "Marqueurs de déviation (« red marker when you leave your prep ») sans quota publié ; portent sur les parties synchronisées (1 an en Basic)."
          },
          {
            "code": "B4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessalyz.ai/openings",
            "note_fr": "« check ideas with Stockfish » dans le répertoire — aucun quota publié pour cette vérification."
          },
          {
            "code": "B5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessalyz.ai/",
            "note_fr": "« Opening Explorer » listé dans le plan Basic $0 sans quota (explorateur bâti sur ses propres parties)."
          },
          {
            "code": "B6",
            "status": "quota-real",
            "quota": "“Opening Repertoire (50 positions)” (plan Basic $0)",
            "source_url": "https://chessalyz.ai/",
            "note_fr": "Les notes/flèches par position vivent dans le répertoire, plafonné à 50 positions en gratuit."
          },
          {
            "code": "C1",
            "status": "quota-real",
            "quota": "“10 flashcards/day, 100 max” (plan Basic $0)",
            "source_url": "https://chessalyz.ai/",
            "note_fr": "10/jour ≥ 5 usages/jour ; stock plafonné à 100 flashcards."
          },
          {
            "code": "C2",
            "status": "quota-real",
            "quota": "“Skills Trainer: 10 puzzles/day” (plan Basic $0)",
            "source_url": "https://chessalyz.ai/",
            "note_fr": "10 puzzles/jour ≥ 5 usages/jour."
          },
          {
            "code": "C3",
            "status": "quota-real",
            "quota": "“Skills Trainer: 10 puzzles/day” (plan Basic $0)",
            "source_url": "https://chessalyz.ai/",
            "note_fr": "Le thème « endgames » vit dans le Skills Trainer, même quota."
          },
          {
            "code": "C4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C5",
            "status": "quota-real",
            "quota": "“Skills Trainer: 10 puzzles/day” (plan Basic $0)",
            "source_url": "https://chessalyz.ai/",
            "note_fr": "Le trainer « defense » vit dans le Skills Trainer, même quota."
          },
          {
            "code": "C6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C7",
            "status": "quota-real",
            "quota": "“Skills Trainer: 10 puzzles/day” (plan Basic $0)",
            "source_url": "https://chessalyz.ai/",
            "note_fr": "La cote adaptative par compétence s’exerce dans la limite du quota du Skills Trainer."
          },
          {
            "code": "C8",
            "status": "quota-real",
            "quota": "“10 flashcards/day, 100 max” (plan Basic $0)",
            "source_url": "https://chessalyz.ai/",
            "note_fr": "La répétition espacée porte sur les flashcards, quotées 10/jour en Basic."
          },
          {
            "code": "C9",
            "status": "quota-real",
            "quota": "“10 flashcards/day, 100 max” (plan Basic $0)",
            "source_url": "https://chessalyz.ai/",
            "note_fr": "Le mode « Daily » est la file quotidienne de flashcards, même quota."
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessalyz.ai/pricing",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques). Basic $0 documenté ligne à ligne."
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessalyz.ai/pricing",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques)."
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessalyz.ai/terms",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques)."
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessalyz.ai/pricing",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques). Trois paliers payants (Silver/Gold/Platinum)."
          },
          {
            "code": "E1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessalyz.ai/testimonials",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques)."
          },
          {
            "code": "E2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessalyz.ai/about",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques)."
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessalyz.ai/",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques)."
          },
          {
            "code": "F1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessalyz.ai/about",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques)."
          },
          {
            "code": "F3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessalyz.ai/",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques). Exercices interactifs seulement, dans les quotas des trainers."
          },
          {
            "code": "F4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessalyz.ai/",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques)."
          },
          {
            "code": "G1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessalyz.ai/",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques). Web seulement."
          },
          {
            "code": "H2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessalyz.ai/",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques). Service serveur, pas de hors-ligne quel que soit le plan."
          },
          {
            "code": "I1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I2",
            "status": "quota-real",
            "quota": "“Opening Repertoire (50 positions)” (plan Basic $0)",
            "source_url": "https://chessalyz.ai/",
            "note_fr": "Notes et flèches par position dans le répertoire plafonné ; aucun partage par lien de toute façon."
          },
          {
            "code": "I3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessalyz.ai/",
            "note_fr": "“PGN file upload” inclus dans le plan Basic $0 (parties OTB saisies en PGN + éditeur d’échiquier) ; pas de photo/OCR."
          },
          {
            "code": "I4",
            "status": "quota-real",
            "quota": "“Personal game library” ; “1,000 games storage” (plan Basic $0)",
            "source_url": "https://chessalyz.ai/",
            "note_fr": "Bibliothèque et filtres inclus en gratuit ; capacité 1 000 parties."
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J3",
            "status": "paid",
            "quota": null,
            "source_url": "https://chessalyz.ai/",
            "note_fr": "Basic : “Classroom: join rooms” seulement ; “Classroom: create & host rooms” commence au plan Silver ($4.99/mo) — l’outil côté entraîneur est payant."
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessalyz.ai/flashcards",
            "note_fr": "« review streak » sans quota ni palier."
          },
          {
            "code": "K1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessalyz.ai/privacy",
            "note_fr": "Droit d’export des données sur demande, ouvert à tout compte ; aucun export PGN en libre-service documenté."
          },
          {
            "code": "K2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessalyz.ai/privacy",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques)."
          },
          {
            "code": "K3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessalyz.ai/",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques). Import PGN seulement, aucune API."
          }
        ]
      }
    },
    {
      "slug": "aimchess",
      "name": "Aimchess",
      "url": "https://aimchess.com",
      "kind": "platform",
      "type": {
        "en": "six-axis diagnosis + personalised lessons",
        "fr": "diagnostic six axes + leçons personnalisées"
      },
      "price": {
        "en": "€53.35/yr ($57.99 annual price shown on aimchess.com#pricing, ×0.92; monthly $7.99; App Store: $71.99/yr)",
        "fr": "53,35 €/an (57,99 $ annuel affiché sur aimchess.com#pricing, ×0,92 ; mensuel 7,99 $ ; App Store : 71,99 $/an)"
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 3.79,
      "unweighted_score": 3.11,
      "category_scores": {
        "A": 5.8,
        "B": 0.6,
        "C": 4.8,
        "D": 6.7,
        "E": 3.3,
        "F": 2,
        "G": 2.5,
        "H": 3.3,
        "I": 0.8,
        "J": 3.3,
        "K": 1.1
      },
      "scores": {
        "A": [
          2,
          2,
          2,
          3,
          1,
          0,
          1,
          3
        ],
        "B": [
          0,
          0,
          1,
          0,
          0,
          0
        ],
        "C": [
          2,
          1,
          2,
          0,
          2,
          2,
          1,
          1,
          2
        ],
        "D": [
          2,
          2,
          1,
          3
        ],
        "E": [
          1,
          0,
          1,
          2
        ],
        "F": [
          1,
          0,
          1,
          1,
          0
        ],
        "G": [
          0,
          1,
          2,
          0
        ],
        "H": [
          3,
          1,
          0,
          0,
          1
        ],
        "I": [
          0,
          0,
          0,
          1
        ],
        "J": [
          0,
          0,
          2,
          2
        ],
        "K": [
          0,
          1,
          0
        ]
      },
      "evidence_urls": {
        "A": [
          "https://aimchess.com#pricing",
          "https://aimchess.com",
          "https://aimchess.com",
          "https://aimchess.com",
          "https://aimchess.com",
          "https://aimchess.com",
          "https://aimchess.com#pricing",
          "https://aimchess.com"
        ],
        "B": [
          "https://aimchess.com",
          "https://aimchess.com",
          "https://aimchess.com",
          "https://aimchess.com",
          "https://aimchess.com",
          "https://aimchess.com"
        ],
        "C": [
          "https://aimchess.com",
          "https://aimchess.com",
          "https://aimchess.com",
          "https://aimchess.com",
          "https://aimchess.com",
          "https://aimchess.com",
          "https://apps.apple.com/us/app/aimchess/id1524941307",
          "https://aimchess.com",
          "https://aimchess.com"
        ],
        "D": [
          "https://aimchess.com#pricing",
          "https://aimchess.com#pricing",
          "https://aimchess.com",
          "https://aimchess.com"
        ],
        "E": [
          "https://aimchess.com",
          "https://aimchess.com",
          "https://aimchess.com",
          "https://aimchess.com"
        ],
        "F": [
          "https://aimchess.com",
          "https://aimchess.com",
          "https://aimchess.com",
          "https://aimchess.com",
          "https://play.google.com"
        ],
        "G": [
          "https://aimchess.com",
          "https://aimchess.com",
          "https://aimchess.com",
          "https://aimchess.com"
        ],
        "H": [
          "https://aimchess.com",
          "https://apps.apple.com/us/app/id1524941307",
          "https://aimchess.com",
          "https://aimchess.com",
          "https://aimchess.com/coaches"
        ],
        "I": [
          "https://aimchess.com",
          "https://aimchess.com",
          "https://aimchess.com",
          "https://aimchess.com"
        ],
        "J": [
          "https://aimchess.com",
          "https://aimchess.com",
          "https://aimchess.com",
          "https://aimchess.com"
        ],
        "K": [
          "https://aimchess.com/static/terms.pdf",
          "https://aimchess.com/static/privacy_policy.pdf",
          "https://aimchess.com"
        ]
      },
      "sources": [
        "https://aimchess.com/",
        "https://aimchess.com/static/privacy_policy.pdf",
        "https://apps.apple.com/us/app/id1524941307",
        "https://apps.apple.com/us/app/aimchess/id1524941307",
        "https://play.google.com/store/apps/details?id=com.aimchess",
        "https://en.wikipedia.org/wiki/Play_Magnus_Group",
        "https://en.wikipedia.org/wiki/Chess.com"
      ],
      "review_url": "https://www.chesspivot.com/en/reviews/aimchess",
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 2.88,
        "criteria": [
          {
            "code": "A1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://aimchess.com#pricing",
            "note_fr": "La connexion d’un compte Chess.com/Lichess est le socle du produit gratuit ; seul « Track multiple accounts across Chess.com/Lichess/Chess24 » est Premium. Pas d’import PGN."
          },
          {
            "code": "A2",
            "status": "quota-symbolic",
            "quota": "“One 40 game analysis report per month” (plan Standard Free)",
            "source_url": "https://aimchess.com#pricing",
            "note_fr": "Un rapport par mois (40 parties) — sous la frontière « 1 analyse/jour » ; « Unlimited reports » est Premium."
          },
          {
            "code": "A3",
            "status": "quota-symbolic",
            "quota": "“One 40 game analysis report per month” (plan Standard Free)",
            "source_url": "https://aimchess.com#pricing",
            "note_fr": "La liste des erreurs récurrentes vit dans le rapport mensuel unique du plan gratuit."
          },
          {
            "code": "A4",
            "status": "quota-symbolic",
            "quota": "“One 40 game analysis report per month” (plan Standard Free)",
            "source_url": "https://aimchess.com#pricing",
            "note_fr": "Les six axes (Tactics, Endgame, Time…) sont le contenu du rapport — un seul rapport/mois en gratuit."
          },
          {
            "code": "A5",
            "status": "quota-symbolic",
            "quota": "“One 40 game analysis report per month” (plan Standard Free)",
            "source_url": "https://aimchess.com#pricing",
            "note_fr": "Étiquettes de gaffe et « Retry Mistakes » dérivent du rapport mensuel unique."
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A7",
            "status": "paid",
            "quota": null,
            "source_url": "https://aimchess.com#pricing",
            "note_fr": "“My statistics page” est listée dans la colonne Premium ($7.99/mo)."
          },
          {
            "code": "A8",
            "status": "quota-symbolic",
            "quota": "“One 40 game analysis report per month” (plan Standard Free)",
            "source_url": "https://aimchess.com#pricing",
            "note_fr": "La comparaison aux joueurs de même classement fait partie du rapport — un seul rapport/mois en gratuit."
          },
          {
            "code": "B1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B3",
            "status": "quota-symbolic",
            "quota": "“One 40 game analysis report per month” (plan Standard Free)",
            "source_url": "https://aimchess.com#pricing",
            "note_fr": "« Opening performance » est un volet du rapport mensuel unique."
          },
          {
            "code": "B4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C1",
            "status": "quota-symbolic",
            "quota": "“One daily training session (core lessons)” (plan Standard Free)",
            "source_url": "https://aimchess.com#pricing",
            "note_fr": "Les puzzles personnalisés se consomment dans la session quotidienne unique ; « Unlimited daily training » est Premium. Taille d’une session non publiée — statut le plus défavorable retenu."
          },
          {
            "code": "C2",
            "status": "quota-symbolic",
            "quota": "“One daily training session (core lessons)” (plan Standard Free)",
            "source_url": "https://aimchess.com#pricing",
            "note_fr": "La leçon Tactics est bornée par la session quotidienne unique du plan gratuit."
          },
          {
            "code": "C3",
            "status": "quota-symbolic",
            "quota": "“One daily training session (core lessons)” (plan Standard Free)",
            "source_url": "https://aimchess.com#pricing",
            "note_fr": "Leçon Endgame + Advantage Capitalization Trainer : bornées par la session quotidienne unique."
          },
          {
            "code": "C4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C5",
            "status": "quota-symbolic",
            "quota": "“One daily training session (core lessons)” (plan Standard Free)",
            "source_url": "https://aimchess.com#pricing",
            "note_fr": "Defender / Blunder Preventer : bornés par la session quotidienne ; la répartition core/Premium des leçons n’est pas publiée."
          },
          {
            "code": "C6",
            "status": "quota-symbolic",
            "quota": "“One daily training session (core lessons)” (plan Standard Free)",
            "source_url": "https://aimchess.com#pricing",
            "note_fr": "Visualization / Blindfold Tactics : bornés par la session quotidienne unique."
          },
          {
            "code": "C7",
            "status": "quota-symbolic",
            "quota": "“One daily training session (core lessons)” (plan Standard Free)",
            "source_url": "https://aimchess.com#pricing",
            "note_fr": "L’« Adaptive Tactics » s’exerce dans la session quotidienne unique."
          },
          {
            "code": "C8",
            "status": "quota-symbolic",
            "quota": "“One 40 game analysis report per month” (plan Standard Free)",
            "source_url": "https://aimchess.com#pricing",
            "note_fr": "« Retry Mistakes » (manuel) dérive du rapport mensuel unique — pas de répétition espacée de toute façon."
          },
          {
            "code": "C9",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://aimchess.com#pricing",
            "note_fr": "“Weekly personalized study plan” figure dans le plan gratuit ; son exécution est bornée par « One daily training session »."
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://aimchess.com#pricing",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques). Colonne Standard Free documentée ligne à ligne."
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://aimchess.com#pricing",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques). $57.99/an affiché."
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://aimchess.com#pricing",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques)."
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://aimchess.com#pricing",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques). Un seul palier Premium."
          },
          {
            "code": "E1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://aimchess.com",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques)."
          },
          {
            "code": "E2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://aimchess.com",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques)."
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://aimchess.com",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques)."
          },
          {
            "code": "F1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://aimchess.com",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques). 13 leçons sans niveau, mêmes intitulés pour tous les plans."
          },
          {
            "code": "F2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://aimchess.com",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques). Exercices interactifs seuls."
          },
          {
            "code": "F4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://aimchess.com",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques)."
          },
          {
            "code": "F5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G2",
            "status": "quota-symbolic",
            "quota": "“One daily training session (core lessons)” (plan Standard Free)",
            "source_url": "https://aimchess.com#pricing",
            "note_fr": "Le jeu contre l’ordinateur (Advantage Capitalization Trainer) est une leçon, bornée par la session quotidienne unique."
          },
          {
            "code": "G3",
            "status": "quota-symbolic",
            "quota": "“One daily training session (core lessons)” (plan Standard Free)",
            "source_url": "https://aimchess.com#pricing",
            "note_fr": "Rejouer ses positions perdues contre l’ordinateur = même leçon, même borne quotidienne."
          },
          {
            "code": "G4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://aimchess.com",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques). Web + iOS + Android."
          },
          {
            "code": "H2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/aimchess/id1524941307",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques)."
          },
          {
            "code": "H3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://aimchess.com",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques). Service serveur, pas de hors-ligne quel que soit le plan."
          },
          {
            "code": "I1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I4",
            "status": "paid",
            "quota": null,
            "source_url": "https://aimchess.com#pricing",
            "note_fr": "“Analysis of your last 1000 online games” est listée dans la colonne Premium ; le gratuit se limite au rapport mensuel de 40 parties."
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J3",
            "status": "paid",
            "quota": null,
            "source_url": "https://aimchess.com#pricing",
            "note_fr": "“Share data & lessons with your coach” est listée dans la colonne Premium."
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://aimchess.com",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques). Aucune monnaie virtuelle ni série constatée."
          },
          {
            "code": "K1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "K2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://aimchess.com/static/privacy_policy.pdf",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques)."
          },
          {
            "code": "K3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          }
        ]
      }
    },
    {
      "slug": "en-croissant",
      "name": "En Croissant",
      "url": "https://encroissant.org/",
      "kind": "platform",
      "type": {
        "en": "open-source desktop analysis GUI",
        "fr": "GUI d’analyse desktop open source"
      },
      "price": {
        "en": "€0 (free, GPL-3.0)",
        "fr": "0 € (gratuit, GPL-3.0)"
      },
      "languages": 2,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 3.75,
      "unweighted_score": 3.64,
      "category_scores": {
        "A": 2.5,
        "B": 5,
        "C": 0.7,
        "D": 10,
        "E": 4.2,
        "F": 0.7,
        "G": 0.8,
        "H": 2.7,
        "I": 4.2,
        "J": 2.5,
        "K": 6.7
      },
      "scores": {
        "A": [
          3,
          2,
          0,
          0,
          1,
          0,
          0,
          0
        ],
        "B": [
          2,
          2,
          0,
          2,
          3,
          0
        ],
        "C": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          2,
          0
        ],
        "D": [
          3,
          3,
          3,
          3
        ],
        "E": [
          0,
          0,
          3,
          2
        ],
        "F": [
          0,
          0,
          0,
          0,
          1
        ],
        "G": [
          0,
          1,
          0,
          0
        ],
        "H": [
          0,
          0,
          1,
          0,
          3
        ],
        "I": [
          1,
          1,
          0,
          3
        ],
        "J": [
          0,
          1,
          0,
          2
        ],
        "K": [
          3,
          0,
          3
        ]
      },
      "evidence_urls": {
        "A": [
          "https://encroissant.org/",
          "https://encroissant.org/docs/guides/analyze-game",
          "https://encroissant.org/docs/guides/analyze-game",
          "https://encroissant.org/docs/guides/analyze-game",
          "https://encroissant.org/docs/guides/analyze-game",
          "https://encroissant.org/docs/",
          "https://encroissant.org/docs/",
          "https://encroissant.org/docs/"
        ],
        "B": [
          "https://encroissant.org/docs/guides/manage-repertoire",
          "https://encroissant.org/docs/guides/manage-repertoire",
          "https://encroissant.org/docs/guides/analyze-game",
          "https://encroissant.org/docs/guides/manage-repertoire",
          "https://encroissant.org/docs/guides/manage-repertoire",
          "https://encroissant.org/docs/"
        ],
        "C": [
          "https://encroissant.org/docs/",
          "https://encroissant.org/docs/",
          "https://encroissant.org/docs/guides/analyze-game",
          "https://encroissant.org/docs/guides/analyze-game",
          "https://encroissant.org/docs/guides/analyze-game",
          "https://encroissant.org/docs/",
          "https://github.com/franciscoBSalgueiro/en-croissant/releases",
          "https://encroissant.org/docs/guides/manage-repertoire",
          "https://encroissant.org/docs/guides/analyze-game"
        ],
        "D": [
          "https://encroissant.org/",
          "https://github.com/franciscoBSalgueiro/en-croissant",
          "https://encroissant.org/",
          "https://github.com/franciscoBSalgueiro/en-croissant"
        ],
        "E": [
          "https://encroissant.org/",
          "https://encroissant.org/docs/",
          "https://github.com/franciscoBSalgueiro/en-croissant",
          "https://encroissant.org/"
        ],
        "F": [
          "https://encroissant.org/",
          "https://encroissant.org/",
          "https://encroissant.org/",
          "https://encroissant.org/",
          "https://github.com/franciscoBSalgueiro/en-croissant/releases"
        ],
        "G": [
          "https://encroissant.org/",
          "https://encroissant.org/docs/guides/configure-engines",
          "https://encroissant.org/docs/",
          "https://encroissant.org/"
        ],
        "H": [
          "https://encroissant.org/download",
          "https://github.com/franciscoBSalgueiro/en-croissant",
          "https://github.com/franciscoBSalgueiro/en-croissant",
          "https://encroissant.org/docs/",
          "https://encroissant.org/download"
        ],
        "I": [
          "https://github.com/franciscoBSalgueiro/en-croissant",
          "https://encroissant.org/docs/guides/analyze-game",
          "https://encroissant.org/docs/guides/analyze-game",
          "https://github.com/franciscoBSalgueiro/en-croissant"
        ],
        "J": [
          "https://encroissant.org/",
          "https://encroissant.org/",
          "https://encroissant.org/"
        ],
        "K": [
          "https://encroissant.org/docs/guides/manage-repertoire",
          "https://encroissant.org/",
          "https://github.com/franciscoBSalgueiro/en-croissant"
        ]
      },
      "sources": [
        "https://encroissant.org/",
        "https://github.com/franciscoBSalgueiro/en-croissant",
        "https://github.com/franciscoBSalgueiro/en-croissant/releases",
        "https://encroissant.org/download",
        "https://encroissant.org/docs/",
        "https://encroissant.org/docs/guides/analyze-game",
        "https://encroissant.org/docs/guides/manage-repertoire",
        "https://encroissant.org/docs/guides/configure-engines"
      ],
      "review_url": "https://www.chesspivot.com/en/reviews/en-croissant",
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 3.75,
        "criteria": [
          {
            "code": "A1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://encroissant.org/",
            "note_fr": "Logiciel libre local (GPL-3.0), gratuit sans paywall — tout ce qui existe est accessible sans quota."
          },
          {
            "code": "A2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://encroissant.org/docs/guides/analyze-game",
            "note_fr": "Logiciel libre local (GPL-3.0), gratuit sans paywall — tout ce qui existe est accessible sans quota. Rapport annoté à la demande, moteur/MultiPV au choix de l’utilisateur."
          },
          {
            "code": "A3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://encroissant.org/docs/guides/analyze-game",
            "note_fr": "Logiciel libre local (GPL-3.0), gratuit sans paywall — tout ce qui existe est accessible sans quota. Étiquettes Dubious/Mistake/Blunder, sans texte explicatif."
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://encroissant.org/docs/guides/manage-repertoire",
            "note_fr": "Logiciel libre local (GPL-3.0), gratuit sans paywall — tout ce qui existe est accessible sans quota."
          },
          {
            "code": "B2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://encroissant.org/docs/guides/manage-repertoire",
            "note_fr": "Logiciel libre local (GPL-3.0), gratuit sans paywall — tout ce qui existe est accessible sans quota. Train mode + répétition espacée."
          },
          {
            "code": "B3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://encroissant.org/docs/guides/manage-repertoire",
            "note_fr": "Logiciel libre local (GPL-3.0), gratuit sans paywall — tout ce qui existe est accessible sans quota."
          },
          {
            "code": "B5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://encroissant.org/docs/guides/manage-repertoire",
            "note_fr": "Logiciel libre local (GPL-3.0), gratuit sans paywall — tout ce qui existe est accessible sans quota. Base de référence + base personnelle + ChessDB.cn."
          },
          {
            "code": "B6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C8",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://encroissant.org/docs/guides/manage-repertoire",
            "note_fr": "Logiciel libre local (GPL-3.0), gratuit sans paywall — tout ce qui existe est accessible sans quota. Échelle 1-4, positions « due for review »."
          },
          {
            "code": "C9",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://encroissant.org/",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques). Tout le logiciel est le « plan gratuit »."
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/franciscoBSalgueiro/en-croissant",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques). 0 € (GPL-3.0)."
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://encroissant.org/",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques). Aucun prix, dons facultatifs."
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/franciscoBSalgueiro/en-croissant",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques)."
          },
          {
            "code": "E1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/franciscoBSalgueiro/en-croissant",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques). Code source public."
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://encroissant.org/",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques)."
          },
          {
            "code": "F1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/franciscoBSalgueiro/en-croissant/releases",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques). Dernière release v0.15.0 (17/03/2026)."
          },
          {
            "code": "G1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://encroissant.org/docs/guides/configure-engines",
            "note_fr": "Logiciel libre local (GPL-3.0), gratuit sans paywall — tout ce qui existe est accessible sans quota. Moteurs UCI installables librement."
          },
          {
            "code": "G3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/franciscoBSalgueiro/en-croissant",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques). 16 locales dans le dépôt (dont fr-FR)."
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://encroissant.org/download",
            "note_fr": "Logiciel libre local (GPL-3.0), gratuit sans paywall — tout ce qui existe est accessible sans quota. Tout est local : usage hors-ligne complet."
          },
          {
            "code": "I1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/franciscoBSalgueiro/en-croissant",
            "note_fr": "Logiciel libre local (GPL-3.0), gratuit sans paywall — tout ce qui existe est accessible sans quota. Consultation des parties d’un joueur via les bases ; aucun rapport dédié."
          },
          {
            "code": "I2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://encroissant.org/docs/guides/analyze-game",
            "note_fr": "Logiciel libre local (GPL-3.0), gratuit sans paywall — tout ce qui existe est accessible sans quota. Variantes/commentaires en PGN locaux ; aucun partage par lien."
          },
          {
            "code": "I3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/franciscoBSalgueiro/en-croissant",
            "note_fr": "Logiciel libre local (GPL-3.0), gratuit sans paywall — tout ce qui existe est accessible sans quota. Recherche par position exacte ou partielle."
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://discord.com/api/invites/tdYzfDbSSW",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques). Discord ~1 400 membres, accès libre."
          },
          {
            "code": "J3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://encroissant.org/",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques). Aucune mécanique d’engagement."
          },
          {
            "code": "K1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://encroissant.org/docs/guides/manage-repertoire",
            "note_fr": "Logiciel libre local (GPL-3.0), gratuit sans paywall — tout ce qui existe est accessible sans quota. Fichiers PGN et bases locales, à soi par construction."
          },
          {
            "code": "K2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "K3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/franciscoBSalgueiro/en-croissant",
            "note_fr": "Critère informatif — indépendant du plan (pages publiques). Code ouvert GPL-3.0."
          }
        ]
      }
    },
    {
      "slug": "chessity",
      "name": "Chessity",
      "url": "https://www.chessity.com/",
      "kind": "platform",
      "type": {
        "en": "step-by-step method for beginners/schools",
        "fr": "méthode par étapes pour débutants/écoles"
      },
      "price": {
        "en": "Individual Premium €75.00/yr (annual price shown on chessity.com/en/prices; €6.25/mo × 12); monthly €7.75; App Store: Premium $69.99/yr ≈ €64, Family $129.99/yr ≈ €120.",
        "fr": "Premium individuel 75,00 €/an (annuel affiché sur chessity.com/en/prices ; 6,25 €/mois × 12) ; mensuel 7,75 € ; App Store : Premium 69,99 $/an ≈ 64 €, Family 129,99 $/an ≈ 120 €."
      },
      "languages": 7,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 3.72,
      "unweighted_score": 3.72,
      "category_scores": {
        "A": 1.3,
        "B": 2.8,
        "C": 4.1,
        "D": 7.5,
        "E": 3.3,
        "F": 4.7,
        "G": 4.2,
        "H": 4.7,
        "I": 0,
        "J": 5,
        "K": 3.3
      },
      "scores": {
        "A": [
          0,
          0,
          1,
          0,
          1,
          0,
          1,
          0
        ],
        "B": [
          1,
          2,
          0,
          0,
          0,
          2
        ],
        "C": [
          0,
          2,
          2,
          1,
          0,
          1,
          2,
          1,
          2
        ],
        "D": [
          2,
          2,
          2,
          3
        ],
        "E": [
          1,
          0,
          1,
          2
        ],
        "F": [
          2,
          0,
          2,
          2,
          1
        ],
        "G": [
          1,
          2,
          0,
          2
        ],
        "H": [
          3,
          0,
          2,
          1,
          1
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          0,
          2,
          2,
          2
        ],
        "K": [
          1,
          2,
          0
        ]
      },
      "evidence_urls": {
        "A": [
          "https://www.chessity.com/faq/2/Learn-train-and-play",
          "https://www.chessity.com/faq/2/Learn-train-and-play",
          "https://www.chessity.com/faq/2/Learn-train-and-play",
          "https://www.chessity.com/faq/6/Chessity",
          "https://www.chessity.com/faq/6/Chessity",
          "https://www.chessity.com/faq/6/Chessity",
          "https://www.chessity.com/faq/2/Learn-train-and-play",
          "https://www.chessity.com/faq/2/Learn-train-and-play"
        ],
        "B": [
          "https://www.chessity.com/faq/2/Learn-train-and-play",
          "https://www.chessity.com/en/prices",
          "https://www.chessity.com/faq/2/Learn-train-and-play",
          "https://www.chessity.com/en/about",
          "https://www.chessity.com/en/prices",
          "https://www.chessity.com/faq/2/Learn-train-and-play"
        ],
        "C": [
          "https://www.chessity.com/faq/2/Learn-train-and-play",
          "https://www.chessity.com/en/prices",
          "https://www.chessity.com/faq/2/Learn-train-and-play",
          "https://www.chessity.com/faq/2/Learn-train-and-play",
          "https://www.chessity.com/en/prices",
          "https://www.chessity.com/faq/2/Learn-train-and-play",
          "https://www.chessity.com/faq/2/Learn-train-and-play",
          "https://www.chessity.com/faq/2/Learn-train-and-play",
          "https://www.chessity.com/faq/6/Chessity"
        ],
        "D": [
          "https://www.chessity.com/faq/25/Accounts---families",
          "https://www.chessity.com/en/prices",
          "https://www.chessity.com/faq/25/Accounts---families",
          "https://www.chessity.com/en/prices"
        ],
        "E": [
          "https://www.chessity.com/en/about",
          "https://www.chessity.com/faq/6/Chessity",
          "https://www.chessity.com/faq/2/Learn-train-and-play",
          "https://www.chessity.com/"
        ],
        "F": [
          "https://www.chessity.com/faq/6/Chessity",
          "https://www.chessity.com/en/about",
          "https://www.chessity.com/faq/6/Chessity",
          "https://www.chessity.com/faq/6/Chessity",
          "https://apps.apple.com/us/app/chessity/id6468482613"
        ],
        "G": [
          "https://www.chessity.com/faq/2/Learn-train-and-play",
          "https://www.chessity.com/faq/32/App",
          "https://www.chessity.com/faq/2/Learn-train-and-play",
          "https://www.chessity.com/faq/24/Tournaments"
        ],
        "H": [
          "https://www.chessity.com/faq/32/App",
          "https://itunes.apple.com/search?term=chessity&entity=software",
          "https://www.chessity.com/",
          "https://www.chessity.com/faq/6/Chessity",
          "https://www.chessity.com/faq/32/App"
        ],
        "I": [
          "https://www.chessity.com/faq/2/Learn-train-and-play",
          "https://www.chessity.com/faq/2/Learn-train-and-play",
          "https://www.chessity.com/faq/6/Chessity",
          "https://www.chessity.com/faq/2/Learn-train-and-play"
        ],
        "J": [
          "https://www.chessity.com/en/prices",
          "https://www.chessity.com/faq/24/Tournaments",
          "https://www.chessity.com/en/group-prices",
          "https://www.chessity.com/faq/25/Accounts---families"
        ],
        "K": [
          "https://www.chessity.com/en/privacy",
          "https://www.chessity.com/en/privacy",
          "https://www.chessity.com/faq/2/Learn-train-and-play"
        ]
      },
      "sources": [
        "https://www.chessity.com/",
        "https://www.chessity.com/en/about_us",
        "https://www.chessity.com/en/about",
        "https://www.chessity.com/en/privacy",
        "https://www.chessity.com/en/prices",
        "https://www.chessity.com/en/blog",
        "https://www.chessity.com/en/blog/1270/Chess_can_rescue_a_kid_from_academic_failure_the_story_behind_Chessity_",
        "https://www.chessity.com/faq/25/Accounts---families",
        "https://apps.apple.com/us/app/chessity/id6468482613",
        "https://play.google.com/store/apps/details?id=chessity.com",
        "https://www.chessity.com/faq/2/Learn-train-and-play",
        "https://www.chessity.com/faq/6/Chessity",
        "https://www.chessity.com/en/terms-and-conditions",
        "https://www.chessity.com/faq/32/App",
        "https://www.chessity.com/faq/24/Tournaments",
        "https://www.chessity.com/en/group-prices"
      ],
      "review_url": "https://www.chesspivot.com/en/reviews/chessity",
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 2.86,
        "criteria": [
          {
            "code": "A1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A3",
            "status": "quota-symbolic",
            "quota": "you can only complete the first five lessons of each lesson level",
            "source_url": "https://www.chessity.com/faq/2/Learn-train-and-play",
            "note_fr": "La cote par compétence n'est alimentée que par l'activité gratuite, plafonnée à 5 leçons par niveau (pool fixe, jamais renouvelé) + tournois limités."
          },
          {
            "code": "A4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A5",
            "status": "quota-symbolic",
            "quota": "you can only complete the first five lessons of each lesson level",
            "source_url": "https://www.chessity.com/faq/2/Learn-train-and-play",
            "note_fr": "L'analyse d'erreurs de Chessto s'exerce dans les leçons, plafonnées en gratuit."
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A7",
            "status": "quota-symbolic",
            "quota": "you can only complete the first five lessons of each lesson level",
            "source_url": "https://www.chessity.com/faq/2/Learn-train-and-play",
            "note_fr": "Suivi de cote limité à l'activité du palier gratuit."
          },
          {
            "code": "A8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B1",
            "status": "quota-symbolic",
            "quota": "you can only complete the first five lessons of each lesson level",
            "source_url": "https://www.chessity.com/faq/2/Learn-train-and-play",
            "note_fr": "Les leçons d'ouverture sont des leçons de niveau : 5 premières seulement en gratuit ; l'accès complet (« Access to over 500 chess lessons ») est Premium (en/prices)."
          },
          {
            "code": "B2",
            "status": "quota-symbolic",
            "quota": "you can only complete the first five lessons of each lesson level",
            "source_url": "https://www.chessity.com/faq/2/Learn-train-and-play",
            "note_fr": "Opening trainer = leçons interactives, même plafond gratuit."
          },
          {
            "code": "B3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B6",
            "status": "quota-symbolic",
            "quota": "you can only complete the first five lessons of each lesson level",
            "source_url": "https://www.chessity.com/faq/2/Learn-train-and-play",
            "note_fr": "Principes d'ouverture enseignés dans les leçons, plafonnées en gratuit."
          },
          {
            "code": "C1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C2",
            "status": "quota-symbolic",
            "quota": "you can only complete the first five lessons of each lesson level",
            "source_url": "https://www.chessity.com/faq/2/Learn-train-and-play",
            "note_fr": "Les « 60,000 exercises used in personalized lessons » sont un bénéfice Premium (en/prices) ; en gratuit, seuls les exercices des 5 premières leçons de chaque niveau."
          },
          {
            "code": "C3",
            "status": "quota-symbolic",
            "quota": "you can only complete the first five lessons of each lesson level",
            "source_url": "https://www.chessity.com/faq/2/Learn-train-and-play",
            "note_fr": "Endgame Mastery est une série de leçons de niveau : mêmes 5 premières leçons en gratuit."
          },
          {
            "code": "C4",
            "status": "quota-symbolic",
            "quota": "you can only complete the first five lessons of each lesson level",
            "source_url": "https://www.chessity.com/faq/2/Learn-train-and-play",
            "note_fr": "Leçons de stratégie (bronze level) : même plafond gratuit."
          },
          {
            "code": "C5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C6",
            "status": "undocumented",
            "quota": null,
            "source_url": null,
            "note_fr": "Les jeux de vision (Frog Race, Space Race) sont dans le Playroom ; aucune page publique ne dit s'ils restent accessibles en gratuit."
          },
          {
            "code": "C7",
            "status": "quota-symbolic",
            "quota": "you can only complete the first five lessons of each lesson level",
            "source_url": "https://www.chessity.com/faq/2/Learn-train-and-play",
            "note_fr": "L'appariement par cote s'applique aux exercices, plafonnés en gratuit ; « AI customizes your learning experience » est listé Premium (en/prices)."
          },
          {
            "code": "C8",
            "status": "quota-symbolic",
            "quota": "you can only complete the first five lessons of each lesson level",
            "source_url": "https://www.chessity.com/faq/2/Learn-train-and-play",
            "note_fr": "« Practicing mistakes » rejoue les problèmes des leçons, plafonnées en gratuit."
          },
          {
            "code": "C9",
            "status": "quota-symbolic",
            "quota": "you can only complete the first five lessons of each lesson level",
            "source_url": "https://www.chessity.com/faq/2/Learn-train-and-play",
            "note_fr": "Les missions de Chessto distribuent des paquets de leçons, plafonnées en gratuit."
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessity.com/faq/25/Accounts---families",
            "note_fr": "Critère informationnel : essai 21 j puis freemium documenté (Pawn/5 leçons par niveau + tournois)."
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessity.com/en/prices",
            "note_fr": "Prix publics (75 €/an) — critère informationnel."
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessity.com/en/prices",
            "note_fr": "Prix affichés, essai sans carte, annulation en ligne — critère informationnel."
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessity.com/en/prices",
            "note_fr": "Un seul palier Premium — critère informationnel."
          },
          {
            "code": "E1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessity.com/en/about",
            "note_fr": "Témoignages publics — critère informationnel."
          },
          {
            "code": "E2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessity.com/faq/2/Learn-train-and-play",
            "note_fr": "Méthode de cote (« standard tables used by FIDE ») publiée — critère informationnel."
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessity.com/",
            "note_fr": "Discours public — critère informationnel."
          },
          {
            "code": "F1",
            "status": "quota-symbolic",
            "quota": "you can only complete the first five lessons of each lesson level",
            "source_url": "https://www.chessity.com/faq/2/Learn-train-and-play",
            "note_fr": "Le parcours par niveaux existe en gratuit mais chaque niveau est tronqué à 5 leçons ; NB FAQ25 : gratuit = « complete all lessons at the Pawn level »."
          },
          {
            "code": "F2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F3",
            "status": "quota-symbolic",
            "quota": "you can only complete the first five lessons of each lesson level",
            "source_url": "https://www.chessity.com/faq/2/Learn-train-and-play",
            "note_fr": "Formats texte + interactif accessibles seulement dans le sous-ensemble gratuit de leçons."
          },
          {
            "code": "F4",
            "status": "quota-symbolic",
            "quota": "you can only complete the first five lessons of each lesson level",
            "source_url": "https://www.chessity.com/faq/2/Learn-train-and-play",
            "note_fr": "Le parcours diplômes/missions est bloqué au-delà des 5 premières leçons de chaque niveau ; « earning diplomas » perdu en gratuit (FAQ25)."
          },
          {
            "code": "F5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/chessity/id6468482613",
            "note_fr": "Fréquence de mise à jour — critère informationnel."
          },
          {
            "code": "G1",
            "status": "paid",
            "quota": null,
            "source_url": "https://www.chessity.com/en/prices",
            "note_fr": "« Challenge other users in the online arena » est listé parmi les bénéfices Premium (Unlimited Playing)."
          },
          {
            "code": "G2",
            "status": "paid",
            "quota": null,
            "source_url": "https://www.chessity.com/en/prices",
            "note_fr": "« Play against custom-made opponents in the app » est listé parmi les bénéfices Premium."
          },
          {
            "code": "G3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G4",
            "status": "quota-symbolic",
            "quota": "you can no longer participate in unlimited tournaments",
            "source_url": "https://www.chessity.com/faq/25/Accounts---families",
            "note_fr": "Le gratuit garde « participate in tournaments » mais la participation illimitée est Premium ; aucun nombre publié → statut le plus défavorable."
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessity.com/faq/32/App",
            "note_fr": "Web + apps téléchargeables gratuitement — critère informationnel."
          },
          {
            "code": "H2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessity.com/",
            "note_fr": "7 langues au sélecteur — critère informationnel."
          },
          {
            "code": "H4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessity.com/faq/6/Chessity",
            "note_fr": "Mode Classic décrit publiquement — critère informationnel."
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessity.com/faq/32/App",
            "note_fr": "Critère informationnel."
          },
          {
            "code": "I1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessity.com/faq/24/Tournaments",
            "note_fr": "Activité (tournois quotidiens) documentée publiquement — critère informationnel."
          },
          {
            "code": "J3",
            "status": "paid",
            "quota": null,
            "source_url": "https://www.chessity.com/en/group-prices",
            "note_fr": "Les outils classe/école relèvent des offres de groupe payantes (group prices)."
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessity.com/faq/25/Accounts---families",
            "note_fr": "Mécaniques d'engagement observables publiquement — critère informationnel."
          },
          {
            "code": "K1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessity.com/en/privacy",
            "note_fr": "Portabilité RGPD (« structured, machine-readable format ») sur demande, pour tout compte y compris gratuit."
          },
          {
            "code": "K2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessity.com/en/privacy",
            "note_fr": "Politique publique — critère informationnel."
          },
          {
            "code": "K3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          }
        ]
      }
    },
    {
      "slug": "mychessplan",
      "name": "MyChessPlan",
      "url": "https://mychessplan.com/",
      "kind": "platform",
      "type": {
        "en": "Chess.com diagnosis and 30-day plan",
        "fr": "diagnostic Chess.com et plan 30 jours"
      },
      "price": {
        "en": "$14.99 ≈ €13.8 as a one-off payment (30-day plan, lifetime access); diagnostic report free. Rule: one-off purchase shown.",
        "fr": "14,99 $ ≈ 13,8 € en paiement unique (plan 30 jours, accès à vie) ; rapport de diagnostic gratuit. Règle : achat unique affiché."
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 3.69,
      "unweighted_score": 2.87,
      "category_scores": {
        "A": 5,
        "B": 1.1,
        "C": 2.2,
        "D": 9.2,
        "E": 4.2,
        "F": 4.7,
        "G": 0,
        "H": 1.3,
        "I": 0,
        "J": 1.7,
        "K": 2.2
      },
      "scores": {
        "A": [
          2,
          1,
          2,
          3,
          2,
          0,
          0,
          2
        ],
        "B": [
          0,
          0,
          1,
          0,
          1,
          0
        ],
        "C": [
          1,
          0,
          1,
          1,
          0,
          0,
          0,
          0,
          3
        ],
        "D": [
          2,
          3,
          3,
          3
        ],
        "E": [
          0,
          0,
          2,
          3
        ],
        "F": [
          0,
          0,
          1,
          3,
          3
        ],
        "G": [
          0,
          0,
          0,
          0
        ],
        "H": [
          1,
          0,
          0,
          0,
          1
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          0,
          0,
          0,
          2
        ],
        "K": [
          0,
          2,
          0
        ]
      },
      "evidence_urls": {
        "A": [
          "https://mychessplan.com/how-it-works/",
          "https://mychessplan.com/how-it-works/",
          "https://mychessplan.com/how-it-works/",
          "https://mychessplan.com/how-it-works/",
          "https://mychessplan.com/sample-report/",
          "https://mychessplan.com/how-it-works/",
          "https://mychessplan.com/sample-report/",
          "https://mychessplan.com/sample-report/"
        ],
        "B": [
          "https://mychessplan.com/sample-report/",
          "https://mychessplan.com/how-it-works/",
          "https://mychessplan.com/sample-report/",
          "https://mychessplan.com/how-it-works/",
          "https://mychessplan.com/how-it-works/",
          "https://mychessplan.com/how-it-works/"
        ],
        "C": [
          "https://mychessplan.com/how-it-works/",
          "https://mychessplan.com/how-it-works/",
          "https://mychessplan.com/sample-report/",
          "https://mychessplan.com/how-it-works/",
          "https://mychessplan.com/sample-report/",
          "https://mychessplan.com/how-it-works/",
          "https://mychessplan.com/how-it-works/",
          "https://mychessplan.com/sample-report/",
          "https://mychessplan.com/sample-report/"
        ],
        "D": [
          "https://mychessplan.com/",
          "https://mychessplan.com/",
          "https://mychessplan.com/",
          "https://mychessplan.com/sample-report/"
        ],
        "E": [
          "https://mychessplan.com/results/",
          "https://mychessplan.com/how-it-works/",
          "https://mychessplan.com/how-it-works/",
          "https://mychessplan.com/how-it-works/"
        ],
        "F": [
          "https://mychessplan.com/how-it-works/",
          "https://mychessplan.com/blog/",
          "https://mychessplan.com/how-it-works/",
          "https://mychessplan.com/how-it-works/",
          "https://mychessplan.com/blog/"
        ],
        "G": [
          "https://mychessplan.com/",
          "https://mychessplan.com/",
          "https://mychessplan.com/",
          "https://mychessplan.com/"
        ],
        "H": [
          "https://mychessplan.com/",
          "https://mychessplan.com/results/",
          "https://mychessplan.com/",
          "https://mychessplan.com/",
          "https://mychessplan.com/privacy-policy/"
        ],
        "I": [
          "https://mychessplan.com/how-it-works/",
          "https://mychessplan.com/how-it-works/",
          "https://mychessplan.com/how-it-works/",
          "https://mychessplan.com/how-it-works/"
        ],
        "J": [
          "https://mychessplan.com/",
          "https://mychessplan.com/",
          "https://mychessplan.com/",
          "https://mychessplan.com/"
        ],
        "K": [
          "https://mychessplan.com/privacy-policy/",
          "https://mychessplan.com/privacy-policy/",
          "https://mychessplan.com/"
        ]
      },
      "sources": [
        "https://mychessplan.com/",
        "https://mychessplan.com/about/",
        "https://mychessplan.com/how-it-works/",
        "https://mychessplan.com/product/",
        "https://mychessplan.com/blog/",
        "https://mychessplan.com/privacy-policy/",
        "https://mychessplan.com/sample-report/",
        "https://mychessplan.com/results/"
      ],
      "review_url": "https://www.chesspivot.com/en/reviews/mychessplan",
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 3.33,
        "criteria": [
          {
            "code": "A1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://mychessplan.com/how-it-works/",
            "note_fr": "L'import Chess.com alimente le rapport de diagnostic GRATUIT (sans carte) ; aucune limite de fréquence publiée."
          },
          {
            "code": "A2",
            "status": "paid",
            "quota": null,
            "source_url": "https://mychessplan.com/how-it-works/",
            "note_fr": "« Stockfish move evaluations on three of your real games » : réservé au workbook payant 14,99 $ ; le rapport gratuit est sans moteur."
          },
          {
            "code": "A3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://mychessplan.com/how-it-works/",
            "note_fr": "Gratuit : « The full table of metrics — the same numbers the classifier saw » + archétype."
          },
          {
            "code": "A4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://mychessplan.com/how-it-works/",
            "note_fr": "Les 17 métriques (ouverture, conversion, temps, tactique) sont dans le rapport gratuit."
          },
          {
            "code": "A5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://mychessplan.com/sample-report/",
            "note_fr": "Le rapport gratuit inclut l'explication de l'archétype et « a walk-through of one of your real games »."
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A8",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://mychessplan.com/sample-report/",
            "note_fr": "Comparaison à la tranche dans le rapport gratuit : « a ~1500-rated player at his rating band typically converts 55-65% »."
          },
          {
            "code": "B1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://mychessplan.com/sample-report/",
            "note_fr": "Taux par ouverture et « worst recurring opening » dans le rapport gratuit."
          },
          {
            "code": "B4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://mychessplan.com/how-it-works/",
            "note_fr": "Distribution ECO/diversité = partie des 17 métriques du rapport gratuit."
          },
          {
            "code": "B6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C1",
            "status": "quota-symbolic",
            "quota": "A walk-through of one of your real games that exemplifies the archetype.",
            "source_url": "https://mychessplan.com/how-it-works/",
            "note_fr": "Gratuit : UNE seule partie commentée par rapport ; les drills quotidiens du plan 30 jours sont payants."
          },
          {
            "code": "C2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C3",
            "status": "paid",
            "quota": null,
            "source_url": "https://mychessplan.com/how-it-works/",
            "note_fr": "L'étude de finales prescrite fait partie du plan 30 jours payant (14,99 $)."
          },
          {
            "code": "C4",
            "status": "paid",
            "quota": null,
            "source_url": "https://mychessplan.com/how-it-works/",
            "note_fr": "Recommandations de leçons/vidéos incluses dans le plan 30 jours payant."
          },
          {
            "code": "C5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C9",
            "status": "paid",
            "quota": null,
            "source_url": "https://mychessplan.com/how-it-works/",
            "note_fr": "« A 30-day training plan — daily schedule of tactics / opening study / endgame drill » = payant 14,99 $ (achat unique)."
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://mychessplan.com/",
            "note_fr": "Rapport de diagnostic gratuit, sans carte — critère informationnel."
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://mychessplan.com/",
            "note_fr": "Prix affiché publiquement (14,99 $, achat unique)."
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://mychessplan.com/",
            "note_fr": "Transparence publique : prix affiché, remboursement 30 jours, aucun renouvellement."
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://mychessplan.com/sample-report/",
            "note_fr": "Un seul achat — critère informationnel."
          },
          {
            "code": "E1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://mychessplan.com/how-it-works/",
            "note_fr": "Méthode documentée publiquement (17 indicateurs, « deterministic, no model in the loop »)."
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://mychessplan.com/how-it-works/",
            "note_fr": "Limites annoncées publiquement — critère informationnel."
          },
          {
            "code": "F1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://mychessplan.com/how-it-works/",
            "note_fr": "Le rapport gratuit est au même format texte/PDF que le workbook."
          },
          {
            "code": "F4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://mychessplan.com/how-it-works/",
            "note_fr": "La méthode de progression est publiée publiquement (le plan lui-même est payant, cf. C9)."
          },
          {
            "code": "F5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://mychessplan.com/blog/",
            "note_fr": "Blog public daté — critère informationnel."
          },
          {
            "code": "G1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://mychessplan.com/",
            "note_fr": "Web seul, accès libre au rapport gratuit."
          },
          {
            "code": "H2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://mychessplan.com/privacy-policy/",
            "note_fr": "Critère informationnel (hébergement Bluehost)."
          },
          {
            "code": "I1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://mychessplan.com/",
            "note_fr": "Aucune ludification — vaut tel quel en gratuit."
          },
          {
            "code": "K1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "K2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://mychessplan.com/privacy-policy/",
            "note_fr": "Politique publique — critère informationnel."
          },
          {
            "code": "K3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          }
        ]
      }
    },
    {
      "slug": "ct-art-chess-king",
      "name": "CT-ART / Chess King",
      "url": "https://learn.chessking.com/learning/",
      "kind": "platform",
      "type": {
        "en": "interactive courses and CT-ART tactics",
        "fr": "cours interactifs et tactique CT-ART"
      },
      "price": {
        "en": "\"Maximum 130+\" subscription (all courses): ₽8,499.15/yr on learn.chessking.com (roubles only); App Store: subscriptions $11.99–119.99 → $119.99 ≈ €110 (× 0.92). CT-ART 4.0 alone: one-off purchase $12.99 ≈ €12. Rule: annual price shown (iOS store, top tier).",
        "fr": "Abonnement « Maximum 130+ » (tous cours) : 8 499,15 ₽/an sur learn.chessking.com (roubles seulement) ; App Store : abonnements 11,99–119,99 $ → 119,99 $ ≈ 110 € (× 0,92). CT-ART 4.0 seul : achat unique 12,99 $ ≈ 12 €. Règle : annuel affiché (store iOS, palier max)."
      },
      "languages": 11,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 3.66,
      "unweighted_score": 3.5,
      "category_scores": {
        "A": 2.1,
        "B": 3.3,
        "C": 5.2,
        "D": 4.2,
        "E": 2.5,
        "F": 4.7,
        "G": 3.3,
        "H": 7.3,
        "I": 1.7,
        "J": 4.2,
        "K": 0
      },
      "scores": {
        "A": [
          0,
          1,
          1,
          0,
          2,
          0,
          1,
          0
        ],
        "B": [
          1,
          2,
          0,
          1,
          0,
          2
        ],
        "C": [
          0,
          2,
          2,
          2,
          2,
          2,
          2,
          1,
          1
        ],
        "D": [
          1,
          1,
          1,
          2
        ],
        "E": [
          1,
          0,
          1,
          1
        ],
        "F": [
          2,
          1,
          2,
          1,
          1
        ],
        "G": [
          1,
          1,
          1,
          1
        ],
        "H": [
          3,
          3,
          3,
          0,
          2
        ],
        "I": [
          0,
          1,
          1,
          0
        ],
        "J": [
          0,
          1,
          2,
          2
        ],
        "K": [
          0,
          0,
          0
        ]
      },
      "evidence_urls": {
        "A": [
          "https://learn.chessking.com/learning/faq",
          "https://play.chessking.com/",
          "https://learn.chessking.com/learning/statistics",
          "https://learn.chessking.com/learning/faq",
          "https://apps.apple.com/us/app/chess-king-learn-to-play/id1305823239",
          "https://learn.chessking.com/learning/faq",
          "https://learn.chessking.com/learning/faq",
          "https://learn.chessking.com/learning/statistics"
        ],
        "B": [
          "https://learn.chessking.com/learning/?lang=en",
          "https://apps.apple.com/us/app/chess-king-learn-to-play/id1305823239",
          "https://learn.chessking.com/learning/faq",
          "https://learn.chessking.com/learning/course/1",
          "https://learn.chessking.com/learning/?lang=en",
          "https://apps.apple.com/us/app/chess-king-learn-to-play/id1305823239"
        ],
        "C": [
          "https://learn.chessking.com/learning/faq",
          "https://apps.apple.com/us/app/ct-art-4-0-chess-tactics/id1132601225",
          "https://apps.apple.com/us/app/chess-king-learn-to-play/id1305823239",
          "https://apps.apple.com/us/app/chess-king-learn-to-play/id1305823239",
          "https://apps.apple.com/us/app/chess-king-learn-to-play/id1305823239",
          "https://apps.apple.com/us/app/ct-art-4-0-chess-tactics/id1132601225",
          "https://learn.chessking.com/learning/faq",
          "https://learn.chessking.com/learning/faq",
          "https://apps.apple.com/us/app/chess-king-learn-to-play/id1305823239"
        ],
        "D": [
          "https://learn.chessking.com/learning/faq",
          "https://apps.apple.com/us/app/chess-king-learn-to-play/id1305823239",
          "https://shop.chessking.com/",
          "https://apps.apple.com/us/app/chess-king-learn-to-play/id1305823239"
        ],
        "E": [
          "https://apps.apple.com/us/app/ct-art-4-0-chess-tactics/id1132601225",
          "https://learn.chessking.com/learning/faq",
          "https://learn.chessking.com/learning/faq",
          "https://learn.chessking.com/learning/"
        ],
        "F": [
          "https://learn.chessking.com/learning/course/1",
          "https://learn.chessking.com/learning/course/1",
          "https://apps.apple.com/us/app/chess-king-learn-to-play/id1305823239",
          "https://learn.chessking.com/learning/?lang=en",
          "https://itunes.apple.com/search?term=chess+king+learn&entity=software"
        ],
        "G": [
          "https://play.chessking.com/",
          "https://apps.apple.com/us/app/chess-king-learn-to-play/id1305823239",
          "https://apps.apple.com/us/app/ct-art-4-0-chess-tactics/id1132601225",
          "https://play.chessking.com/"
        ],
        "H": [
          "https://learn.chessking.com/learning/?lang=en",
          "https://itunes.apple.com/search?term=chess+king+learn&entity=software",
          "https://chessking.com/",
          "https://learn.chessking.com/learning/faq",
          "https://learn.chessking.com/learning/faq"
        ],
        "I": [
          "https://play.chessking.com/",
          "https://learn.chessking.com/learning/faq",
          "https://learn.chessking.com/learning/faq",
          "https://play.chessking.com/"
        ],
        "J": [
          "https://learn.chessking.com/learning/faq",
          "https://play.chessking.com/",
          "https://learn.chessking.com/learning/faq",
          "https://apps.apple.com/us/app/chess-king-learn-to-play/id1305823239"
        ],
        "K": [
          "https://learn.chessking.com/learning/faq",
          "https://chessking.com/ios_privacy_policy.html",
          "https://learn.chessking.com/learning/faq"
        ]
      },
      "sources": [
        "https://chessking.com/",
        "https://chessok.com/",
        "https://chessok.com/?page_id=27966",
        "https://learn.chessking.com/learning/?lang=en",
        "https://apps.apple.com/us/app/chess-king-learn-to-play/id1305823239",
        "https://apps.apple.com/us/app/ct-art-4-0-chess-tactics/id1132601225",
        "https://apps.apple.com/us/app/id1305823239",
        "https://apps.apple.com/us/app/id1132601225"
      ],
      "review_url": "https://www.chesspivot.com/en/reviews/ct-art-chess-king",
      "free_access": null
    },
    {
      "slug": "scid-vs-pc",
      "name": "Scid vs PC",
      "url": "https://scidvspc.sourceforge.net/",
      "kind": "platform",
      "type": {
        "en": "free chess database software",
        "fr": "base de données d’échecs libre"
      },
      "price": {
        "en": "Free (GPLv2), free software — rule: free.",
        "fr": "Gratuit (GPLv2), logiciel libre — règle : gratuit."
      },
      "languages": 11,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 3.57,
      "unweighted_score": 4.2,
      "category_scores": {
        "A": 1.7,
        "B": 3.3,
        "C": 0.7,
        "D": 10,
        "E": 4.2,
        "F": 0.7,
        "G": 3.3,
        "H": 4,
        "I": 5.8,
        "J": 2.5,
        "K": 10
      },
      "scores": {
        "A": [
          2,
          1,
          1,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          2,
          2,
          0,
          0,
          2,
          0
        ],
        "C": [
          0,
          1,
          1,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "D": [
          3,
          3,
          3,
          3
        ],
        "E": [
          0,
          0,
          3,
          2
        ],
        "F": [
          0,
          0,
          0,
          0,
          1
        ],
        "G": [
          1,
          1,
          2,
          0
        ],
        "H": [
          0,
          1,
          2,
          0,
          3
        ],
        "I": [
          2,
          1,
          1,
          3
        ],
        "J": [
          0,
          1,
          0,
          2
        ],
        "K": [
          3,
          3,
          3
        ]
      },
      "evidence_urls": {
        "A": [
          "https://sourceforge.net/projects/scidvspc/",
          "https://scidvspc.sourceforge.net/",
          "https://scidvspc.sourceforge.net/",
          "https://scidvspc.sourceforge.net/",
          "https://scidvspc.sourceforge.net/",
          "https://scidvspc.sourceforge.net/",
          "https://scidvspc.sourceforge.net/",
          "https://scidvspc.sourceforge.net/"
        ],
        "B": [
          "https://scidvspc.sourceforge.net/",
          "https://scidvspc.sourceforge.net/doc/Changelog.htm",
          "https://scidvspc.sourceforge.net/",
          "https://scidvspc.sourceforge.net/",
          "https://scidvspc.sourceforge.net/",
          "https://scidvspc.sourceforge.net/"
        ],
        "C": [
          "https://scidvspc.sourceforge.net/",
          "https://scidvspc.sourceforge.net/",
          "https://scidvspc.sourceforge.net/",
          "https://scidvspc.sourceforge.net/",
          "https://scidvspc.sourceforge.net/",
          "https://scidvspc.sourceforge.net/",
          "https://scidvspc.sourceforge.net/",
          "https://scidvspc.sourceforge.net/",
          "https://scidvspc.sourceforge.net/"
        ],
        "D": [
          "https://sourceforge.net/projects/scidvspc/",
          "https://sourceforge.net/projects/scidvspc/",
          "https://sourceforge.net/projects/scidvspc/",
          "https://scidvspc.sourceforge.net/"
        ],
        "E": [
          "https://scidvspc.sourceforge.net/",
          "https://scidvspc.sourceforge.net/",
          "https://sourceforge.net/projects/scidvspc/",
          "https://scidvspc.sourceforge.net/"
        ],
        "F": [
          "https://scidvspc.sourceforge.net/",
          "https://scidvspc.sourceforge.net/",
          "https://scidvspc.sourceforge.net/",
          "https://scidvspc.sourceforge.net/",
          "https://scidvspc.sourceforge.net/doc/Changelog.htm"
        ],
        "G": [
          "https://scidvspc.sourceforge.net/",
          "https://scidvspc.sourceforge.net/",
          "https://scidvspc.sourceforge.net/",
          "https://scidvspc.sourceforge.net/"
        ],
        "H": [
          "https://sourceforge.net/projects/scidvspc/",
          "https://sourceforge.net/projects/scidvspc/",
          "https://scidvspc.sourceforge.net/",
          "https://scidvspc.sourceforge.net/",
          "https://sourceforge.net/projects/scidvspc/"
        ],
        "I": [
          "https://scidvspc.sourceforge.net/doc/Reports.htm",
          "https://scidvspc.sourceforge.net/",
          "https://scidvspc.sourceforge.net/",
          "https://scidvspc.sourceforge.net/doc/Searches.htm"
        ],
        "J": [
          "https://scidvspc.sourceforge.net/",
          "https://sourceforge.net/projects/scidvspc/",
          "https://scidvspc.sourceforge.net/",
          "https://scidvspc.sourceforge.net/"
        ],
        "K": [
          "https://scidvspc.sourceforge.net/",
          "https://sourceforge.net/projects/scidvspc/",
          "https://sourceforge.net/projects/scidvspc/"
        ]
      },
      "sources": [
        "https://scidvspc.sourceforge.net/",
        "https://sourceforge.net/projects/scidvspc/",
        "https://scidvspc.sourceforge.net/doc/Changelog.htm",
        "https://scidvspc.sourceforge.net/doc/Reports.htm",
        "https://scidvspc.sourceforge.net/doc/Searches.htm"
      ],
      "review_url": "https://www.chesspivot.com/en/reviews/scid-vs-pc",
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 3.57,
        "criteria": [
          {
            "code": "A1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://scidvspc.sourceforge.net/",
            "note_fr": "Logiciel libre GPL, local : import PGN sans aucune limite ni paywall."
          },
          {
            "code": "A2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://scidvspc.sourceforge.net/",
            "note_fr": "Analyse moteur à la demande, entièrement locale et gratuite."
          },
          {
            "code": "A3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://scidvspc.sourceforge.net/",
            "note_fr": "Tree analysis sur ses bases, gratuit."
          },
          {
            "code": "A4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://scidvspc.sourceforge.net/",
            "note_fr": "Bases et arbres libres, opening trainer inclus."
          },
          {
            "code": "B2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://scidvspc.sourceforge.net/doc/Changelog.htm",
            "note_fr": "Pascal's Opening Trainer, gratuit (GPL)."
          },
          {
            "code": "B3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://scidvspc.sourceforge.net/",
            "note_fr": "Tree analysis sur toute base chargée, gratuit."
          },
          {
            "code": "B6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://scidvspc.sourceforge.net/",
            "note_fr": "Tactics game (Phalanx) inclus dans le logiciel libre."
          },
          {
            "code": "C3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://scidvspc.sourceforge.net/",
            "note_fr": "Tables de finales consultables, gratuit."
          },
          {
            "code": "C4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C9",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://sourceforge.net/projects/scidvspc/",
            "note_fr": "GPLv2 : « Free Open Source software downloads », aucun palier payant."
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://sourceforge.net/projects/scidvspc/",
            "note_fr": "Gratuit — critère informationnel."
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://sourceforge.net/projects/scidvspc/",
            "note_fr": "Aucun paiement ni renouvellement."
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://scidvspc.sourceforge.net/",
            "note_fr": "Aucune offre payante."
          },
          {
            "code": "E1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://sourceforge.net/projects/scidvspc/",
            "note_fr": "Code source GPLv2 public."
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://scidvspc.sourceforge.net/",
            "note_fr": "Description factuelle, accessible à tous."
          },
          {
            "code": "F1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://scidvspc.sourceforge.net/doc/Changelog.htm",
            "note_fr": "Mises à jour publiées, toutes gratuites."
          },
          {
            "code": "G1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://scidvspc.sourceforge.net/",
            "note_fr": "Jeu via FICS, serveur gratuit."
          },
          {
            "code": "G2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://scidvspc.sourceforge.net/",
            "note_fr": "Phalanx et moteurs UCI, gratuit et local."
          },
          {
            "code": "G3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://scidvspc.sourceforge.net/",
            "note_fr": "Partie contre le moteur depuis toute position, gratuit."
          },
          {
            "code": "G4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://sourceforge.net/projects/scidvspc/",
            "note_fr": "Avis SourceForge publics — critère informationnel."
          },
          {
            "code": "H3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://scidvspc.sourceforge.net/",
            "note_fr": "Traductions incluses dans le logiciel gratuit."
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://sourceforge.net/projects/scidvspc/",
            "note_fr": "Logiciel local, tout fonctionne hors-ligne, gratuit."
          },
          {
            "code": "I1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://scidvspc.sourceforge.net/doc/Reports.htm",
            "note_fr": "Player Report inclus, gratuit."
          },
          {
            "code": "I2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://scidvspc.sourceforge.net/",
            "note_fr": "Annotations locales (variantes, commentaires, NAG), gratuit."
          },
          {
            "code": "I3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://scidvspc.sourceforge.net/",
            "note_fr": "Saisie des coups sur l'échiquier, gratuit."
          },
          {
            "code": "I4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://scidvspc.sourceforge.net/doc/Searches.htm",
            "note_fr": "Board/Material/Pattern search et CQL, gratuit."
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://sourceforge.net/projects/scidvspc/",
            "note_fr": "Forums SourceForge publics — critère informationnel."
          },
          {
            "code": "J3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://scidvspc.sourceforge.net/",
            "note_fr": "Aucune ludification ni mécanique payante — vaut tel quel en gratuit."
          },
          {
            "code": "K1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://scidvspc.sourceforge.net/",
            "note_fr": "Export PGN/EPD/LaTeX, données locales, gratuit."
          },
          {
            "code": "K2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://sourceforge.net/projects/scidvspc/",
            "note_fr": "Logiciel local sans compte, aucune donnée collectée."
          },
          {
            "code": "K3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://sourceforge.net/projects/scidvspc/",
            "note_fr": "Code source ouvert GPLv2."
          }
        ]
      }
    },
    {
      "slug": "disco-chess",
      "name": "Disco Chess",
      "url": "https://discochess.com/",
      "kind": "platform",
      "type": {
        "en": "woodpecker-method puzzles + spaced repetition",
        "fr": "puzzles méthode woodpecker + répétition espacée"
      },
      "price": {
        "en": "$49.99/yr ≈ €46 (Premium annual price shown on the App Store); $7.99/mo",
        "fr": "49,99 $/an ≈ 46 € (Premium annuel affiché sur l’App Store) ; 7,99 $/mois"
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 3.51,
      "unweighted_score": 2.93,
      "category_scores": {
        "A": 2.1,
        "B": 3.3,
        "C": 3.3,
        "D": 7.5,
        "E": 3.3,
        "F": 5.3,
        "G": 0,
        "H": 2.7,
        "I": 1.7,
        "J": 0.8,
        "K": 2.2
      },
      "scores": {
        "A": [
          2,
          2,
          0,
          1,
          0,
          0,
          0,
          0
        ],
        "B": [
          1,
          2,
          0,
          1,
          0,
          2
        ],
        "C": [
          2,
          1,
          0,
          0,
          0,
          0,
          2,
          2,
          2
        ],
        "D": [
          2,
          2,
          2,
          3
        ],
        "E": [
          1,
          0,
          2,
          1
        ],
        "F": [
          2,
          0,
          2,
          2,
          2
        ],
        "G": [
          0,
          0,
          0,
          0
        ],
        "H": [
          3,
          0,
          0,
          0,
          1
        ],
        "I": [
          0,
          0,
          1,
          1
        ],
        "J": [
          0,
          1,
          0,
          0
        ],
        "K": [
          0,
          2,
          0
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 3.21,
        "criteria": [
          {
            "code": "A1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://discochess.com/",
            "note_fr": "Le scan des parties Lichess (« personalized tactics from Lichess games ») est listé dans le gratuit, sans quota publié."
          },
          {
            "code": "A2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://discochess.com/",
            "note_fr": "La passe automatique sur les parties Lichess fait partie du gratuit ; seuls les sets 1000 et les cœurs illimités sont Premium."
          },
          {
            "code": "A3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://discochess.com/",
            "note_fr": "L'axe couvert (tactique) est celui du scan gratuit."
          },
          {
            "code": "A5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://discochess.com/",
            "note_fr": "« Opening repertoires with video lessons and drills » listé dans le gratuit."
          },
          {
            "code": "B2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://discochess.com/",
            "note_fr": "Leçons vidéo + drills des répertoires en gratuit (cœurs : perte sur erreur, cf. C2)."
          },
          {
            "code": "B3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://discochess.com/",
            "note_fr": "Affirmation « GM-curated » publique — critère informationnel."
          },
          {
            "code": "B5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B6",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://discochess.com/",
            "note_fr": "Vidéos d'ouverture incluses dans le gratuit."
          },
          {
            "code": "C1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://discochess.com/",
            "note_fr": "Mistake Review (tactiques manquées de ses parties) listé dans le gratuit."
          },
          {
            "code": "C2",
            "status": "quota-real",
            "quota": "puzzle sets up to 500 puzzles — You get 5 hearts and lose one on each mistake, with a new heart regenerating every 5 hours. — Premium adds 1000-puzzle sets and unlimited hearts",
            "source_url": "https://discochess.com/",
            "note_fr": "18 thèmes et cycles illimités en gratuit ; les cœurs ne se perdent que sur erreur → usage quotidien réel possible."
          },
          {
            "code": "C3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C7",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://discochess.com/",
            "note_fr": "Les cotes de puzzles se mettent à jour en résolvant, activité incluse dans le gratuit."
          },
          {
            "code": "C8",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://discochess.com/",
            "note_fr": "« Mistake Review (Anki-style spaced repetition) » listé dans le gratuit."
          },
          {
            "code": "C9",
            "status": "undocumented",
            "quota": null,
            "source_url": null,
            "note_fr": "Le parcours « Journey » n'apparaît que sur la fiche App Store, qui ne dit pas s'il est gratuit ou Premium ; absent des pages publiques du site."
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://discochess.com/",
            "note_fr": "Périmètre gratuit publié — critère informationnel."
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/disco-chess-tactics-puzzles/id6778853768",
            "note_fr": "Prix Premium publié sur l'App Store (49,99 $/an) — critère informationnel."
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://discochess.com/terms",
            "note_fr": "Conditions publiques (remboursement 14 j, Stripe) — critère informationnel."
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/disco-chess-tactics-puzzles/id6778853768",
            "note_fr": "Un seul palier Premium — critère informationnel."
          },
          {
            "code": "E1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://discochess.com/",
            "note_fr": "Chiffre « +35 Elo » publié publiquement — critère informationnel."
          },
          {
            "code": "E2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://discochess.com/",
            "note_fr": "Intervalles 1/3/7/14/30 j et méthode woodpecker publiés — critère informationnel."
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://discochess.com/",
            "note_fr": "Critère informationnel."
          },
          {
            "code": "F1",
            "status": "undocumented",
            "quota": null,
            "source_url": null,
            "note_fr": "Les 5 niveaux du « Journey » ne sont décrits que sur l'App Store, sans statut gratuit/Premium."
          },
          {
            "code": "F2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://discochess.com/",
            "note_fr": "Vidéos + exercices interactifs présents dans le périmètre gratuit (répertoires, puzzles)."
          },
          {
            "code": "F4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://discochess.com/",
            "note_fr": "Cycles woodpecker : « unlimited cycles » en gratuit."
          },
          {
            "code": "F5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/disco-chess-tactics-puzzles/id6778853768",
            "note_fr": "Critère informationnel."
          },
          {
            "code": "G1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://discochess.com/",
            "note_fr": "Web + iOS + Android, accès gratuit avec synchronisation."
          },
          {
            "code": "H2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://discochess.com/",
            "note_fr": "Critère informationnel."
          },
          {
            "code": "I1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I3",
            "status": "undocumented",
            "quota": null,
            "source_url": null,
            "note_fr": "Le « Stockfish analysis board » n'est mentionné que sur la fiche App Store, sans statut gratuit/Premium."
          },
          {
            "code": "I4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://discochess.com/",
            "note_fr": "La liste des parties Lichess avec tactiques manquées fait partie du scan gratuit."
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://discochess.com/",
            "note_fr": "Discord public — critère informationnel."
          },
          {
            "code": "J3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "K1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "K2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://discochess.com/privacy",
            "note_fr": "Politique publique — critère informationnel."
          },
          {
            "code": "K3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          }
        ]
      }
    },
    {
      "slug": "listudy",
      "name": "Listudy",
      "url": "https://listudy.org/",
      "kind": "platform",
      "type": {
        "en": "open-source spaced-repetition trainer",
        "fr": "entraîneur open source répétition espacée"
      },
      "price": {
        "en": "free (no paid offer on listudy.org)",
        "fr": "gratuit (aucune offre payante sur listudy.org)"
      },
      "languages": 10,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 3.44,
      "unweighted_score": 3.38,
      "category_scores": {
        "A": 0.4,
        "B": 2.8,
        "C": 3.3,
        "D": 10,
        "E": 5,
        "F": 1.3,
        "G": 1.7,
        "H": 2.7,
        "I": 0,
        "J": 3.3,
        "K": 6.7
      },
      "scores": {
        "A": [
          1,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          2,
          2,
          0,
          0,
          0,
          1
        ],
        "C": [
          0,
          1,
          2,
          0,
          0,
          2,
          0,
          2,
          2
        ],
        "D": [
          3,
          3,
          3,
          3
        ],
        "E": [
          0,
          1,
          3,
          2
        ],
        "F": [
          0,
          1,
          0,
          0,
          1
        ],
        "G": [
          0,
          1,
          1,
          0
        ],
        "H": [
          1,
          0,
          2,
          0,
          1
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          0,
          1,
          0,
          3
        ],
        "K": [
          2,
          1,
          3
        ]
      },
      "evidence_urls": {
        "A": [
          "https://listudy.org/en",
          "https://listudy.org/en",
          "https://listudy.org/en",
          "https://listudy.org/en",
          "https://listudy.org/en",
          "https://listudy.org/en",
          "https://listudy.org/en",
          "https://listudy.org/en"
        ],
        "B": [
          "https://listudy.org/en",
          "https://listudy.org/en",
          "https://listudy.org/en",
          "https://listudy.org/en",
          "https://listudy.org/en",
          "https://listudy.org/fr"
        ],
        "C": [
          "https://listudy.org/en",
          "https://listudy.org/fr",
          "https://listudy.org/en",
          "https://listudy.org/en",
          "https://listudy.org/en",
          "https://listudy.org/en",
          "https://listudy.org/en",
          "https://listudy.org/en",
          "https://listudy.org/en"
        ],
        "D": [
          "https://listudy.org/en",
          "https://listudy.org/en",
          "https://listudy.org/en",
          "https://listudy.org/en"
        ],
        "E": [
          "https://listudy.org/en",
          "https://github.com/ArneVogel/listudy",
          "https://github.com/ArneVogel/listudy",
          "https://listudy.org/en"
        ],
        "F": [
          "https://listudy.org/en",
          "https://listudy.org/en",
          "https://listudy.org/en",
          "https://listudy.org/en",
          "https://github.com/ArneVogel/listudy/commits/master"
        ],
        "G": [
          "https://listudy.org/en",
          "https://listudy.org/en",
          "https://listudy.org/en",
          "https://listudy.org/en"
        ],
        "H": [
          "https://listudy.org/en",
          "https://listudy.org/en",
          "https://listudy.org/",
          "https://listudy.org/en",
          "https://listudy.org/en"
        ],
        "I": [
          "https://listudy.org/en",
          "https://listudy.org/en",
          "https://listudy.org/en",
          "https://listudy.org/en"
        ],
        "J": [
          "https://listudy.org/en",
          "https://github.com/ArneVogel/listudy",
          "https://listudy.org/en",
          "https://listudy.org/en"
        ],
        "K": [
          "https://listudy.org/en",
          "https://listudy.org/en/privacy",
          "https://github.com/ArneVogel/listudy"
        ]
      },
      "sources": [
        "https://listudy.org/en",
        "https://listudy.org/",
        "https://github.com/ArneVogel/listudy",
        "https://github.com/ArneVogel/listudy",
        "https://github.com/ArneVogel/listudy/commits",
        "https://listudy.org/en/privacy"
      ],
      "review_url": "https://www.chesspivot.com/en/reviews/listudy",
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 3.44,
        "criteria": [
          {
            "code": "A1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://listudy.org/en",
            "note_fr": "« Free & Open Source » : tout le site est gratuit, aucune offre payante — import PGN d'étude illimité."
          },
          {
            "code": "A2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://listudy.org/en",
            "note_fr": "Création d'études depuis tout PGN, gratuit sans quota."
          },
          {
            "code": "B2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://listudy.org/en",
            "note_fr": "Drill + répétition espacée des études, gratuit."
          },
          {
            "code": "B3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B6",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://listudy.org/fr",
            "note_fr": "Rubrique Ouvertures en accès libre."
          },
          {
            "code": "C1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://listudy.org/fr",
            "note_fr": "Tactiques (« des milliers de séquences ») gratuites, sans quota."
          },
          {
            "code": "C3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://listudy.org/en",
            "note_fr": "Finales contre Stockfish, gratuit."
          },
          {
            "code": "C4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C6",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://listudy.org/en",
            "note_fr": "Blind tactics et pieceless tactics, gratuit."
          },
          {
            "code": "C7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C8",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://listudy.org/en",
            "note_fr": "Répétition espacée des études, gratuit."
          },
          {
            "code": "C9",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://listudy.org/en",
            "note_fr": "Daily Puzzle + file de révision, gratuit."
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://listudy.org/en",
            "note_fr": "« Free & Open Source », tout illimité."
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://listudy.org/en",
            "note_fr": "Gratuit — critère informationnel."
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://listudy.org/en",
            "note_fr": "Aucun paiement, aucun renouvellement."
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://listudy.org/en",
            "note_fr": "Aucune offre payante."
          },
          {
            "code": "E1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/ArneVogel/listudy",
            "note_fr": "Issues GitHub publiques — critère informationnel."
          },
          {
            "code": "E3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/ArneVogel/listudy",
            "note_fr": "Code source public AGPL-3.0."
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://listudy.org/en",
            "note_fr": "Discours factuel, site entièrement gratuit."
          },
          {
            "code": "F1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://listudy.org/en",
            "note_fr": "Auteur (Arne Vogel) visible publiquement."
          },
          {
            "code": "F3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/ArneVogel/listudy/commits/master",
            "note_fr": "Historique de commits public — critère informationnel."
          },
          {
            "code": "G1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://listudy.org/en",
            "note_fr": "Stockfish sur les finales, gratuit."
          },
          {
            "code": "G3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://listudy.org/en",
            "note_fr": "Finales/études jouées contre Stockfish, gratuit."
          },
          {
            "code": "G4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://listudy.org/en",
            "note_fr": "Web, accès libre."
          },
          {
            "code": "H2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://listudy.org/",
            "note_fr": "10 langues au sélecteur, accès libre."
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://listudy.org/en",
            "note_fr": "Service web gratuit — critère informationnel."
          },
          {
            "code": "I1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/ArneVogel/listudy",
            "note_fr": "Communauté GitHub publique — critère informationnel."
          },
          {
            "code": "J3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://listudy.org/en",
            "note_fr": "Aucune ludification — vaut tel quel en gratuit."
          },
          {
            "code": "K1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://listudy.org/en",
            "note_fr": "Études import/export PGN, gratuit."
          },
          {
            "code": "K2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://listudy.org/en/privacy",
            "note_fr": "Politique publique — critère informationnel."
          },
          {
            "code": "K3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/ArneVogel/listudy",
            "note_fr": "Code source ouvert AGPL-3.0."
          }
        ]
      }
    },
    {
      "slug": "chessy",
      "name": "Chessy",
      "url": "https://chessyapp.com/",
      "kind": "platform",
      "type": {
        "en": "AI coach on imported games",
        "fr": "coach IA sur parties importées"
      },
      "price": {
        "en": "$49.99/yr ≈ €46 (annual price shown, chessyapp.com/faq); $7.99/mo; $79.99 lifetime",
        "fr": "49,99 $/an ≈ 46 € (annuel affiché, chessyapp.com/faq) ; 7,99 $/mois ; 79,99 $ à vie"
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 3.42,
      "unweighted_score": 2.5,
      "category_scores": {
        "A": 5,
        "B": 3.3,
        "C": 3,
        "D": 5.8,
        "E": 2.5,
        "F": 2,
        "G": 0,
        "H": 2,
        "I": 0,
        "J": 1.7,
        "K": 2.2
      },
      "scores": {
        "A": [
          2,
          2,
          2,
          2,
          2,
          0,
          2,
          0
        ],
        "B": [
          1,
          1,
          1,
          0,
          1,
          2
        ],
        "C": [
          2,
          1,
          0,
          0,
          2,
          0,
          1,
          0,
          2
        ],
        "D": [
          0,
          2,
          2,
          3
        ],
        "E": [
          0,
          0,
          1,
          2
        ],
        "F": [
          0,
          0,
          1,
          0,
          2
        ],
        "G": [
          0,
          0,
          0,
          0
        ],
        "H": [
          1,
          1,
          0,
          0,
          1
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          0,
          0,
          0,
          2
        ],
        "K": [
          0,
          2,
          0
        ]
      },
      "evidence_urls": {
        "A": [
          "https://chessyapp.com/faq",
          "https://chessyapp.com/faq",
          "https://chessyapp.com/",
          "https://chessyapp.com/",
          "https://chessyapp.com/",
          "https://chessyapp.com/faq",
          "https://chessyapp.com/",
          "https://chessyapp.com/"
        ],
        "B": [
          "https://chessyapp.com/",
          "https://chessyapp.com/",
          "https://chessyapp.com/",
          "https://chessyapp.com/",
          "https://chessyapp.com/",
          "https://chessyapp.com/"
        ],
        "C": [
          "https://chessyapp.com/faq",
          "https://chessyapp.com/",
          "https://chessyapp.com/",
          "https://chessyapp.com/",
          "https://chessyapp.com/faq",
          "https://chessyapp.com/",
          "https://chessyapp.com/faq",
          "https://chessyapp.com/faq",
          "https://chessyapp.com/"
        ],
        "D": [
          "https://chessyapp.com/faq",
          "https://chessyapp.com/faq",
          "https://chessyapp.com/faq",
          "https://chessyapp.com/faq"
        ],
        "E": [
          "https://chessyapp.com/about",
          "https://chessyapp.com/",
          "https://chessyapp.com/privacy",
          "https://chessyapp.com/about"
        ],
        "F": [
          "https://chessyapp.com/",
          "https://chessyapp.com/about",
          "https://chessyapp.com/",
          "https://chessyapp.com/",
          "https://apps.apple.com/us/app/ai-chess-coach-chessy/id6761496636"
        ],
        "G": [
          "https://chessyapp.com/",
          "https://chessyapp.com/",
          "https://chessyapp.com/",
          "https://chessyapp.com/"
        ],
        "H": [
          "https://chessyapp.com/faq",
          "https://apps.apple.com/us/app/ai-chess-coach-chessy/id6761496636",
          "https://apps.apple.com/us/app/ai-chess-coach-chessy/id6761496636",
          "https://chessyapp.com/",
          "https://chessyapp.com/privacy"
        ],
        "I": [
          "https://chessyapp.com/",
          "https://chessyapp.com/faq",
          "https://chessyapp.com/faq",
          "https://chessyapp.com/"
        ],
        "J": [
          "https://chessyapp.com/",
          "https://chessyapp.com/",
          "https://chessyapp.com/",
          "https://chessyapp.com/"
        ],
        "K": [
          "https://chessyapp.com/privacy",
          "https://chessyapp.com/privacy",
          "https://chessyapp.com/"
        ]
      },
      "sources": [
        "https://chessyapp.com/",
        "https://chessyapp.com/faq",
        "https://chessyapp.com/about",
        "https://chessyapp.com/privacy",
        "https://apps.apple.com/us/app/ai-chess-coach-chessy/id6761496636",
        "https://play.google.com/store/apps/details?id=com.luzzy.chessy"
      ],
      "review_url": "https://www.chesspivot.com/en/reviews/chessy",
      "free_access": null
    },
    {
      "slug": "chesskid",
      "name": "ChessKid",
      "url": "https://www.chesskid.com/",
      "kind": "platform",
      "type": {
        "en": "chess platform for children and schools",
        "fr": "plateforme échecs pour enfants et écoles"
      },
      "price": {
        "en": "$59/yr (annual price shown on chesskid.com/membership; $14/mo, $29/quarter) ≈ €54 ($1 ≈ €0.92)",
        "fr": "59 $/an (annuel affiché sur chesskid.com/membership ; 14 $/mois, 29 $/trimestre) ≈ 54 € (1 $ ≈ 0,92 €)"
      },
      "languages": 28,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 3.37,
      "unweighted_score": 4.04,
      "category_scores": {
        "A": 1.3,
        "B": 0.6,
        "C": 3,
        "D": 6.7,
        "E": 3.3,
        "F": 6.7,
        "G": 4.2,
        "H": 6.7,
        "I": 0.8,
        "J": 6.7,
        "K": 4.4
      },
      "scores": {
        "A": [
          0,
          1,
          0,
          0,
          0,
          0,
          1,
          1
        ],
        "B": [
          0,
          0,
          0,
          0,
          0,
          1
        ],
        "C": [
          0,
          2,
          1,
          1,
          0,
          1,
          2,
          0,
          1
        ],
        "D": [
          1,
          2,
          2,
          3
        ],
        "E": [
          1,
          0,
          1,
          2
        ],
        "F": [
          2,
          2,
          3,
          2,
          1
        ],
        "G": [
          2,
          2,
          0,
          1
        ],
        "H": [
          3,
          3,
          3,
          0,
          1
        ],
        "I": [
          0,
          0,
          0,
          1
        ],
        "J": [
          2,
          3,
          2,
          1
        ],
        "K": [
          2,
          1,
          1
        ]
      },
      "evidence_urls": {
        "A": [
          "https://www.chesskid.com/",
          "https://www.chesskid.com/learn/articles/chess-coaching-for-kids",
          "https://www.chesskid.com/learn/articles/chess-coaching-for-kids",
          "https://www.chesskid.com/",
          "https://www.chesskid.com/",
          "https://www.chesskid.com/",
          "https://www.chesskid.com/learn/articles/chess-coaching-for-kids",
          "https://www.chesskid.com/learn/articles/chess-coaching-for-kids"
        ],
        "B": [
          "https://www.chesskid.com/",
          "https://www.chesskid.com/",
          "https://www.chesskid.com/",
          "https://www.chesskid.com/",
          "https://www.chesskid.com/",
          "https://www.chesskid.com/"
        ],
        "C": [
          "https://www.chesskid.com/",
          "https://www.chesskid.com/puzzles",
          "https://www.chesskid.com/",
          "https://www.chesskid.com/",
          "https://www.chesskid.com/",
          "https://support.chesskid.com/en/articles/8858285-what-s-the-difference-between-a-free-account-a-gold-membership",
          "https://www.chesskid.com/puzzles",
          "https://www.chesskid.com/",
          "https://www.chesskid.com/"
        ],
        "D": [
          "https://support.chesskid.com/en/articles/8858285-what-s-the-difference-between-a-free-account-a-gold-membership",
          "https://www.chesskid.com/membership",
          "https://www.chesskid.com/membership",
          "https://www.chesskid.com/membership"
        ],
        "E": [
          "https://www.chesskid.com/membership",
          "https://www.chesskid.com/",
          "https://www.chesskid.com/",
          "https://www.chesskid.com/"
        ],
        "F": [
          "https://support.chesskid.com/en/articles/8858285-what-s-the-difference-between-a-free-account-a-gold-membership",
          "https://play.google.com/store/apps/details?id=com.chesskid",
          "https://www.chesskid.com/",
          "https://www.chesskid.com/learn/articles/chess-coaching-for-kids",
          "https://play.google.com/store/apps/details?id=com.chesskid"
        ],
        "G": [
          "https://play.google.com/store/apps/details?id=com.chesskid",
          "https://www.chesskid.com/learn/articles/chess-coaching-for-kids",
          "https://www.chesskid.com/",
          "https://www.chesskid.com/learn/articles/chess-coaching-for-kids"
        ],
        "H": [
          "https://www.chesskid.com/",
          "https://play.google.com/store/apps/details?id=com.chesskid",
          "https://www.chesskid.com/",
          "https://www.chesskid.com/"
        ],
        "I": [
          "https://www.chesskid.com/",
          "https://www.chesskid.com/learn/articles/chess-coaching-for-kids",
          "https://www.chesskid.com/",
          "https://www.chesskid.com/"
        ],
        "J": [
          "https://www.chesskid.com/learn/articles/chess-coaching-for-kids",
          "https://play.google.com/store/apps/details?id=com.chesskid",
          "https://www.chesskid.com/learn/articles/chess-coaching-for-kids",
          "https://www.chesskid.com/learn/articles/chess-coaching-for-kids"
        ],
        "K": [
          "https://support.chesskid.com/en/articles/8858285-what-s-the-difference-between-a-free-account-a-gold-membership",
          "https://www.chess.com/legal/privacy",
          "https://www.chesskid.com/"
        ]
      },
      "sources": [
        "https://www.chesskid.com/",
        "https://www.chess.com/about",
        "https://apps.apple.com/us/app/id629375826",
        "https://support.chesskid.com/en/articles/8858285-what-s-the-difference-between-a-free-account-a-gold-membership",
        "https://support.chesskid.com/en/articles/8863206-how-do-i-stop-my-gold-membership-from-renewing",
        "https://www.chesskid.com/membership",
        "https://en.wikipedia.org/wiki/Chess.com"
      ],
      "review_url": "https://www.chesspivot.com/en/reviews/chesskid",
      "free_access": null
    },
    {
      "slug": "chessdojo",
      "name": "ChessDojo",
      "url": "https://www.chessdojo.club/",
      "kind": "platform",
      "type": {
        "en": "training programme by rating cohorts",
        "fr": "programme d’entraînement par cohortes de classement"
      },
      "price": {
        "en": "$144/yr ≈ €132 (Core \"$12/month*\" billed yearly, 12 × $12; chessdojo.club/prices) — the home page quotes \"$120 per year\"; Workshops tier $75/mo and Game & Profile Review $200/mo",
        "fr": "144 $/an ≈ 132 € (Core « $12/month* » facturé à l’année, 12 × 12 $ ; chessdojo.club/prices) — l’accueil cite « 120 $ par an » ; paliers Workshops 75 $/mois et Game & Profile Review 200 $/mois"
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 3.36,
      "unweighted_score": 3.93,
      "category_scores": {
        "A": 1.7,
        "B": 3.3,
        "C": 3,
        "D": 3.3,
        "E": 5.8,
        "F": 7.3,
        "G": 0.8,
        "H": 1.3,
        "I": 6.7,
        "J": 6.7,
        "K": 3.3
      },
      "scores": {
        "A": [
          1,
          0,
          1,
          1,
          0,
          0,
          1,
          0
        ],
        "B": [
          1,
          1,
          0,
          1,
          1,
          2
        ],
        "C": [
          0,
          1,
          1,
          2,
          0,
          0,
          1,
          0,
          3
        ],
        "D": [
          1,
          1,
          1,
          1
        ],
        "E": [
          1,
          2,
          3,
          1
        ],
        "F": [
          3,
          3,
          2,
          2,
          1
        ],
        "G": [
          0,
          0,
          0,
          1
        ],
        "H": [
          1,
          0,
          0,
          0,
          1
        ],
        "I": [
          1,
          3,
          1,
          3
        ],
        "J": [
          3,
          2,
          1,
          2
        ],
        "K": [
          0,
          0,
          3
        ]
      },
      "evidence_urls": {
        "A": [
          "https://www.chessdojo.club/help",
          "https://www.chessdojo.club/",
          "https://www.chessdojo.club/blog/dojo-digest/vol-24",
          "https://www.chessdojo.club/blog/tactics-test",
          "https://www.chessdojo.club/blog/dojo-digest/vol-13",
          "https://www.chessdojo.club/help",
          "https://www.chessdojo.club/prices",
          "https://www.chessdojo.club/"
        ],
        "B": [
          "https://www.chessdojo.club/prices",
          "https://www.chessdojo.club/prices",
          "https://www.chessdojo.club/",
          "https://www.chessdojo.club/",
          "https://www.chessdojo.club/",
          "https://www.chessdojo.club/prices"
        ],
        "C": [
          "https://www.chessdojo.club/",
          "https://www.chessdojo.club/prices",
          "https://www.chessdojo.club/",
          "https://www.chessdojo.club/blog/dojo-blog/4-0",
          "https://www.chessdojo.club/blog",
          "https://www.chessdojo.club/",
          "https://www.chessdojo.club/",
          "https://www.chessdojo.club/blog",
          "https://www.chessdojo.club/blog/dojo-blog/4-0"
        ],
        "D": [
          "https://www.chessdojo.club/",
          "https://www.chessdojo.club/prices",
          "https://www.chessdojo.club/prices",
          "https://www.chessdojo.club/prices"
        ],
        "E": [
          "https://www.chessdojo.club/",
          "https://www.chessdojo.club/",
          "https://github.com/jackstenglein/chess-dojo-scheduler",
          "https://www.chessdojo.club/"
        ],
        "F": [
          "https://www.chessdojo.club/prices",
          "https://www.chessdojo.club/",
          "https://www.chessdojo.club/prices",
          "https://www.chessdojo.club/help",
          "https://www.chessdojo.club/blog"
        ],
        "G": [
          "https://www.chessdojo.club/",
          "https://www.chessdojo.club/",
          "https://www.chessdojo.club/",
          "https://www.chessdojo.club/blog"
        ],
        "H": [
          "https://www.chessdojo.club/",
          "https://www.chessdojo.club/",
          "https://www.chessdojo.club/",
          "https://www.chessdojo.club/help",
          "https://www.chessdojo.club/"
        ],
        "I": [
          "https://www.chessdojo.club/blog/dojo-digest/vol-20",
          "https://www.chessdojo.club/blog/dojo-digest/vol-14",
          "https://www.chessdojo.club/blog/dojo-digest/vol-13",
          "https://www.chessdojo.club/blog/dojo-digest/vol-10"
        ],
        "J": [
          "https://www.chessdojo.club/prices",
          "https://www.chessdojo.club/help",
          "https://www.chessdojo.club/",
          "https://www.chessdojo.club/"
        ],
        "K": [
          "https://www.chessdojo.club/help",
          "https://www.chessdojo.club/privacy",
          "https://github.com/jackstenglein/chess-dojo-scheduler"
        ]
      },
      "sources": [
        "https://www.chessdojo.club/blog",
        "https://www.chessdojo.club/blog/dojo-blog/4-0",
        "https://www.chessdojo.club/blog/dojo-digest/vol-8",
        "https://www.chessdojo.club/blog/dojo-digest/vol-10",
        "https://github.com/jackstenglein/chess-dojo-scheduler",
        "https://github.com/jackstenglein/chess-dojo-scheduler"
      ],
      "review_url": "https://www.chesspivot.com/en/reviews/chessdojo",
      "free_access": null
    },
    {
      "slug": "noctie-ai",
      "name": "Noctie.ai",
      "url": "https://noctie.ai/",
      "kind": "platform",
      "type": {
        "en": "Human-like AI opponent with flashcards",
        "fr": "Adversaire IA humanisé avec flashcards"
      },
      "price": {
        "en": "€96/yr (annual price shown, \"€8/month billed yearly\"; monthly €14) — no free tier beyond a 7-day trial",
        "fr": "96 €/an (annuel affiché « 8 €/mois billed yearly » ; mensuel 14 €) — pas de gratuit hors essai 7 jours"
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 3.26,
      "unweighted_score": 3.15,
      "category_scores": {
        "A": 2.1,
        "B": 2.8,
        "C": 4.1,
        "D": 5,
        "E": 2.5,
        "F": 3.3,
        "G": 3.3,
        "H": 4,
        "I": 1.7,
        "J": 2.5,
        "K": 3.3
      },
      "scores": {
        "A": [
          2,
          2,
          0,
          0,
          1,
          0,
          0,
          0
        ],
        "B": [
          2,
          2,
          0,
          0,
          0,
          1
        ],
        "C": [
          2,
          1,
          2,
          2,
          0,
          0,
          1,
          2,
          1
        ],
        "D": [
          0,
          1,
          2,
          3
        ],
        "E": [
          0,
          0,
          1,
          2
        ],
        "F": [
          1,
          0,
          1,
          1,
          2
        ],
        "G": [
          0,
          3,
          1,
          0
        ],
        "H": [
          3,
          2,
          0,
          0,
          1
        ],
        "I": [
          0,
          0,
          1,
          1
        ],
        "J": [
          0,
          1,
          0,
          2
        ],
        "K": [
          1,
          1,
          1
        ]
      },
      "evidence_urls": {
        "A": [
          "https://noctie.ai/",
          "https://noctie.ai/",
          "https://noctie.ai/faq",
          "https://noctie.ai/",
          "https://noctie.ai/",
          "https://noctie.ai/faq",
          "https://noctie.ai/",
          "https://noctie.ai/"
        ],
        "B": [
          "https://noctie.ai/faq",
          "https://noctie.ai/",
          "https://noctie.ai/",
          "https://noctie.ai/faq",
          "https://noctie.ai/",
          "https://noctie.ai/"
        ],
        "C": [
          "https://noctie.ai/faq",
          "https://noctie.ai/",
          "https://noctie.ai/",
          "https://noctie.ai/faq",
          "https://noctie.ai/",
          "https://noctie.ai/",
          "https://noctie.ai/faq",
          "https://noctie.ai/faq",
          "https://noctie.ai/"
        ],
        "D": [
          "https://noctie.ai/pricing",
          "https://noctie.ai/pricing",
          "https://noctie.ai/pricing",
          "https://noctie.ai/pricing"
        ],
        "E": [
          "https://noctie.ai/",
          "https://noctie.ai/faq",
          "https://noctie.ai/",
          "https://noctie.ai/"
        ],
        "F": [
          "https://noctie.ai/",
          "https://noctie.ai/",
          "https://noctie.ai/",
          "https://noctie.ai/",
          "https://apps.apple.com/us/app/noctie-chess-trainer/id6444289077"
        ],
        "G": [
          "https://noctie.ai/",
          "https://noctie.ai/",
          "https://noctie.ai/",
          "https://noctie.ai/"
        ],
        "H": [
          "https://noctie.ai/pricing",
          "https://apps.apple.com/us/app/noctie-chess-trainer/id6444289077",
          "https://noctie.ai/faq",
          "https://noctie.ai/",
          "https://noctie.ai/"
        ],
        "I": [
          "https://noctie.ai/",
          "https://noctie.ai/faq",
          "https://noctie.ai/",
          "https://noctie.ai/pricing"
        ],
        "J": [
          "https://noctie.ai/",
          "https://noctie.ai/pricing",
          "https://noctie.ai/",
          "https://noctie.ai/"
        ],
        "K": [
          "https://noctie.ai/privacy",
          "https://noctie.ai/privacy",
          "https://noctie.ai/faq"
        ]
      },
      "sources": [
        "https://noctie.ai/",
        "https://noctie.ai/faq",
        "https://noctie.ai/pricing",
        "https://noctie.ai/blog",
        "https://noctie.ai/privacy",
        "https://apps.apple.com/us/app/id6444289077"
      ],
      "review_url": "https://www.chesspivot.com/en/reviews/noctie-ai",
      "free_access": null
    },
    {
      "slug": "chess-dna",
      "name": "Chess DNA",
      "url": "https://chessdna.app/",
      "kind": "platform",
      "type": {
        "en": "weakness radar and AI drills",
        "fr": "radar de faiblesses et drills IA"
      },
      "price": {
        "en": "$49.99/yr ≈ €46 (annual price shown; monthly $5.99; 90-day pass $12.99; Founder $79.99 for 3 years; $1 ≈ €0.92)",
        "fr": "49,99 $/an ≈ 46 € (annuel affiché ; mensuel 5,99 $ ; pass 90 j 12,99 $ ; Founder 79,99 $ pour 3 ans ; 1 $ ≈ 0,92 €)"
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 3.25,
      "unweighted_score": 2.49,
      "category_scores": {
        "A": 5.8,
        "B": 0.6,
        "C": 3,
        "D": 6.7,
        "E": 3.3,
        "F": 1.3,
        "G": 0,
        "H": 2,
        "I": 0.8,
        "J": 1.7,
        "K": 2.2
      },
      "scores": {
        "A": [
          2,
          2,
          3,
          3,
          2,
          0,
          2,
          0
        ],
        "B": [
          0,
          0,
          1,
          0,
          0,
          0
        ],
        "C": [
          2,
          0,
          0,
          2,
          2,
          0,
          0,
          0,
          2
        ],
        "D": [
          2,
          2,
          1,
          3
        ],
        "E": [
          1,
          0,
          1,
          2
        ],
        "F": [
          0,
          0,
          0,
          0,
          2
        ],
        "G": [
          0,
          0,
          0,
          0
        ],
        "H": [
          2,
          0,
          0,
          0,
          1
        ],
        "I": [
          0,
          0,
          0,
          1
        ],
        "J": [
          0,
          0,
          0,
          2
        ],
        "K": [
          1,
          1,
          0
        ]
      },
      "evidence_urls": {
        "A": [
          "https://chessdna.app/faq.html",
          "https://chessdna.app/compare/chess-dna-vs-aimchess.html",
          "https://chessdna.app/features.html",
          "https://chessdna.app/features.html",
          "https://chessdna.app/faq.html",
          "https://chessdna.app/faq.html",
          "https://chessdna.app/faq.html",
          "https://chessdna.app/features.html"
        ],
        "B": [
          "https://chessdna.app/features.html",
          "https://chessdna.app/features.html",
          "https://chessdna.app/features.html",
          "https://chessdna.app/features.html",
          "https://chessdna.app/features.html",
          "https://chessdna.app/features.html"
        ],
        "C": [
          "https://chessdna.app/",
          "https://chessdna.app/features.html",
          "https://chessdna.app/features.html",
          "https://chessdna.app/features.html",
          "https://chessdna.app/features.html",
          "https://chessdna.app/features.html",
          "https://chessdna.app/faq.html",
          "https://chessdna.app/faq.html",
          "https://chessdna.app/faq.html"
        ],
        "D": [
          "https://chessdna.app/pricing.html",
          "https://chessdna.app/pricing.html",
          "https://chessdna.app/pricing.html",
          "https://chessdna.app/pricing.html"
        ],
        "E": [
          "https://chessdna.app/",
          "https://chessdna.app/faq.html",
          "https://chessdna.app/compare/chess-dna-vs-aimchess.html",
          "https://chessdna.app/"
        ],
        "F": [
          "https://chessdna.app/",
          "https://chessdna.app/",
          "https://chessdna.app/",
          "https://chessdna.app/",
          "https://chessdna.app/privacy.html"
        ],
        "G": [
          "https://chessdna.app/features.html",
          "https://chessdna.app/features.html",
          "https://chessdna.app/",
          "https://chessdna.app/"
        ],
        "H": [
          "https://chessdna.app/faq.html",
          "https://chessdna.app/faq.html",
          "https://chessdna.app/privacy.html"
        ],
        "I": [
          "https://chessdna.app/faq.html",
          "https://chessdna.app/features.html",
          "https://chessdna.app/faq.html",
          "https://chessdna.app/pricing.html"
        ],
        "J": [
          "https://chessdna.app/",
          "https://chessdna.app/",
          "https://chessdna.app/",
          "https://chessdna.app/"
        ],
        "K": [
          "https://chessdna.app/privacy.html",
          "https://chessdna.app/privacy.html",
          "https://chessdna.app/"
        ]
      },
      "sources": [
        "https://chessdna.app/",
        "https://chessdna.app/faq.html",
        "https://chessdna.app/features.html",
        "https://chessdna.app/pricing.html",
        "https://chessdna.app/privacy.html",
        "https://chessdna.app/press.html",
        "https://chessdna.app/about.html",
        "https://chessdna.app/openings/london-system.html",
        "https://apps.apple.com/il/app/chess-dna/id6762600434",
        "https://chessdna.app/compare/chess-dna-vs-aimchess.html"
      ],
      "review_url": "https://www.chesspivot.com/en/reviews/chess-dna",
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 2.59,
        "criteria": [
          {
            "code": "A1",
            "status": "quota-real",
            "quota": "Your last 50 games",
            "source_url": "https://chessdna.app/pricing.html",
            "note_fr": "Import par pseudo Chess.com/Lichess gratuit, fenêtre de 50 parties (Pro : « full game history »)."
          },
          {
            "code": "A2",
            "status": "quota-real",
            "quota": "free includes your top 3 weakness patterns, 3 challenges a day, and your last 50 games, with analysis running on your device",
            "source_url": "https://chessdna.app/faq.html",
            "note_fr": "L'analyse tourne localement gratuitement sur les 50 dernières parties ; le moteur cloud est Pro."
          },
          {
            "code": "A3",
            "status": "quota-real",
            "quota": "Your top 3 weakness patterns",
            "source_url": "https://chessdna.app/pricing.html",
            "note_fr": "3 motifs sur 16 en gratuit (Pro : « All 16 mistake patterns »)."
          },
          {
            "code": "A4",
            "status": "quota-real",
            "quota": "Your top 3 weakness patterns",
            "source_url": "https://chessdna.app/pricing.html",
            "note_fr": "La typologie complète (16 motifs, 6 axes) n'est explorée qu'en Pro ; le gratuit couvre les 3 motifs les plus coûteux."
          },
          {
            "code": "A5",
            "status": "quota-real",
            "quota": "free includes your top 3 weakness patterns, 3 challenges a day, and your last 50 games, with analysis running on your device",
            "source_url": "https://chessdna.app/faq.html",
            "note_fr": "Explications d'erreurs gratuites (« analysis runs locally in your browser at no cost »), bornées à la fenêtre gratuite."
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A7",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessdna.app/pricing.html",
            "note_fr": "Le « 8-dimension Skill Radar » figure dans le plan gratuit, mis à jour après chaque partie (alimenté par la fenêtre de 50 parties)."
          },
          {
            "code": "A8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B3",
            "status": "quota-symbolic",
            "quota": "Your top 3 weakness patterns",
            "source_url": "https://chessdna.app/pricing.html",
            "note_fr": "Les motifs Opening Inaccuracies/Preparation ne sont visibles en gratuit que s'ils figurent dans le top 3 personnel — sinon Pro."
          },
          {
            "code": "B4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C1",
            "status": "quota-symbolic",
            "quota": "3 challenges a day",
            "source_url": "https://chessdna.app/pricing.html",
            "note_fr": "3 défis/jour < la frontière publiée de 5 exercices/jour (Pro : « Unlimited challenges »)."
          },
          {
            "code": "C2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C4",
            "status": "quota-symbolic",
            "quota": "Your top 3 weakness patterns — 3 challenges a day",
            "source_url": "https://chessdna.app/pricing.html",
            "note_fr": "Replays positionnels accessibles seulement si le motif est dans le top 3 gratuit, et 3 défis/jour."
          },
          {
            "code": "C5",
            "status": "quota-symbolic",
            "quota": "Your top 3 weakness patterns — 3 challenges a day",
            "source_url": "https://chessdna.app/pricing.html",
            "note_fr": "Même verrou pour les motifs défensifs (Hanging Pieces, Back Rank, King Safety)."
          },
          {
            "code": "C6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C9",
            "status": "quota-symbolic",
            "quota": "3 challenges a day",
            "source_url": "https://chessdna.app/pricing.html",
            "note_fr": "Les défis quotidiens tirés des propres parties sont plafonnés à 3/jour en gratuit."
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessdna.app/pricing.html",
            "note_fr": "Périmètre gratuit publié — critère informationnel."
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessdna.app/pricing.html",
            "note_fr": "Prix publics (49,99 $/an) — critère informationnel."
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessdna.app/pricing.html",
            "note_fr": "Critère informationnel."
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessdna.app/pricing.html",
            "note_fr": "Un seul niveau Pro — critère informationnel."
          },
          {
            "code": "E1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessdna.app/",
            "note_fr": "Affirmation publique — critère informationnel."
          },
          {
            "code": "E2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessdna.app/faq.html",
            "note_fr": "Ce qui est publié (analyse locale gratuite, moteur cloud Pro) est public — critère informationnel."
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessdna.app/",
            "note_fr": "Critère informationnel."
          },
          {
            "code": "F1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/id6762600434",
            "note_fr": "Critère informationnel."
          },
          {
            "code": "G1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessdna.app/faq.html",
            "note_fr": "Web, iOS, Android accessibles avec le plan gratuit — critère informationnel."
          },
          {
            "code": "H2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessdna.app/privacy.html",
            "note_fr": "Critère informationnel."
          },
          {
            "code": "I1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I4",
            "status": "quota-real",
            "quota": "Your last 50 games",
            "source_url": "https://chessdna.app/pricing.html",
            "note_fr": "Historique gratuit limité aux 50 dernières parties ; « Full game history » (250 parties, faq) est Pro."
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessdna.app/",
            "note_fr": "Cartes partageables, pas de monnaie virtuelle — critère informationnel."
          },
          {
            "code": "K1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessdna.app/privacy.html",
            "note_fr": "Export « machine-readable » via formulaire, pour tout compte y compris gratuit."
          },
          {
            "code": "K2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessdna.app/privacy.html",
            "note_fr": "Politique publique — critère informationnel."
          },
          {
            "code": "K3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          }
        ]
      }
    },
    {
      "slug": "chessiro",
      "name": "Chessiro",
      "url": "https://chessiro.com",
      "kind": "platform",
      "type": {
        "en": "game analysis + AI coach",
        "fr": "analyse de parties + coach IA"
      },
      "price": {
        "en": "Pro $15/mo on the monthly plan; annual \"−13%\" not priced → 15 × 12 × 0.87 ≈ $157 ≈ €144 (× 0.92). Plus: $10/mo → ≈ €96/yr. Rule: 12 × monthly with the announced discount (annual price not shown).",
        "fr": "Pro 15 $/mois en mensuel ; annuel « −13 % » non chiffré → 15 × 12 × 0,87 ≈ 157 $ ≈ 144 € (× 0,92). Plus : 10 $/mois → ≈ 96 €/an. Règle : 12 × mensuel avec la remise annoncée (annuel non affiché)."
      },
      "languages": 24,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 3.25,
      "unweighted_score": 3.03,
      "category_scores": {
        "A": 4.2,
        "B": 2.2,
        "C": 1.9,
        "D": 5,
        "E": 5.8,
        "F": 1.3,
        "G": 3.3,
        "H": 2.7,
        "I": 0.8,
        "J": 1.7,
        "K": 4.4
      },
      "scores": {
        "A": [
          3,
          2,
          1,
          2,
          2,
          0,
          0,
          0
        ],
        "B": [
          0,
          0,
          0,
          0,
          2,
          2
        ],
        "C": [
          2,
          1,
          0,
          0,
          0,
          0,
          0,
          2,
          0
        ],
        "D": [
          2,
          1,
          1,
          2
        ],
        "E": [
          0,
          2,
          2,
          3
        ],
        "F": [
          0,
          1,
          0,
          0,
          1
        ],
        "G": [
          1,
          1,
          2,
          0
        ],
        "H": [
          1,
          0,
          2,
          0,
          1
        ],
        "I": [
          0,
          0,
          0,
          1
        ],
        "J": [
          0,
          0,
          0,
          2
        ],
        "K": [
          1,
          1,
          2
        ]
      },
      "evidence_urls": {
        "A": [
          "https://chessiro.com/llms.txt",
          "https://chessiro.com/about",
          "https://chessiro.com/about",
          "https://chessiro.com/about",
          "https://chessiro.com/about",
          "https://chessiro.com/about",
          "https://chessiro.com/pricing",
          "https://chessiro.com/about"
        ],
        "B": [
          "https://chessiro.com/llms.txt",
          "https://chessiro.com/llms.txt",
          "https://chessiro.com/llms.txt",
          "https://chessiro.com/about",
          "https://chessiro.com/openapi.json",
          "https://chessiro.com/llms.txt"
        ],
        "C": [
          "https://chessiro.com/llms.txt",
          "https://chessiro.com/pricing",
          "https://chessiro.com/about",
          "https://chessiro.com/llms.txt",
          "https://chessiro.com/llms.txt",
          "https://chessiro.com/llms.txt",
          "https://chessiro.com/llms.txt",
          "https://chessiro.com/llms.txt",
          "https://chessiro.com/about"
        ],
        "D": [
          "https://chessiro.com/pricing",
          "https://chessiro.com/pricing",
          "https://chessiro.com/pricing",
          "https://chessiro.com/pricing"
        ],
        "E": [
          "https://chessiro.com/about",
          "https://chessiro.com/llms.txt",
          "https://chessiro.com/about",
          "https://chessiro.com/about"
        ],
        "F": [
          "https://chessiro.com/llms.txt",
          "https://chessiro.com/about",
          "https://chessiro.com/llms.txt",
          "https://chessiro.com/about",
          "https://chessiro.com/about"
        ],
        "G": [
          "https://chessiro.com/llms.txt",
          "https://chessiro.com/llms.txt",
          "https://chessiro.com/",
          "https://chessiro.com/llms.txt"
        ],
        "H": [
          "https://chessiro.com/llms.txt",
          "https://chessiro.com/",
          "https://chessiro.com/about",
          "https://chessiro.com/about",
          "https://chessiro.com/api/status"
        ],
        "I": [
          "https://chessiro.com/llms.txt",
          "https://chessiro.com/llms.txt",
          "https://chessiro.com/llms.txt",
          "https://chessiro.com/pricing"
        ],
        "J": [
          "https://chessiro.com/pricing",
          "https://chessiro.com/",
          "https://chessiro.com/pricing",
          "https://chessiro.com/pricing"
        ],
        "K": [
          "https://chessiro.com/privacy",
          "https://chessiro.com/privacy",
          "https://chessiro.com/openapi.json"
        ]
      },
      "sources": [
        "https://chessiro.com/",
        "https://chessiro.com/about",
        "https://chessiro.com/contact",
        "https://chessiro.com/pricing",
        "https://chessiro.com/privacy",
        "https://chessiro.com/llms.txt",
        "https://chessiro.com/blog",
        "https://chessiro.com/blog/who-are-we",
        "https://chessiro.com/blog/introducing-play",
        "https://chessiro.com/blog/introducing-bots",
        "https://chessiro.com/blog/inside-chessiro-game-review",
        "https://trendingchess.com/blog/chessiro-review-2026-the-free-ai-chess-coach-that-turns-your-mistakes-into-training",
        "https://x.com/Ra1kshit/status/1984089365577109520"
      ],
      "review_url": "https://www.chesspivot.com/en/reviews/chessiro",
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 2.7,
        "criteria": [
          {
            "code": "A1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessiro.com/about",
            "note_fr": "« Paste a PGN or import your Chess.com and Lichess games, and get a free move-by-move review » ; llms.txt : « Game analysis is free and unlimited »"
          },
          {
            "code": "A2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessiro.com/support",
            "note_fr": "« Game analysis with Stockfish 18 is completely free with no daily limit »"
          },
          {
            "code": "A3",
            "status": "undocumented",
            "quota": null,
            "source_url": null,
            "note_fr": "la carte forces/faiblesses (about) n'est rattachée à aucun palier sur pricing/support"
          },
          {
            "code": "A4",
            "status": "undocumented",
            "quota": null,
            "source_url": null,
            "note_fr": "les axes couverts dépendent de la carte A3, dont le palier n'est pas publié"
          },
          {
            "code": "A5",
            "status": "quota-symbolic",
            "quota": "AI Coach preview",
            "source_url": "https://chessiro.com/pricing",
            "note_fr": "« Limited » sans nombre publié ; support : « AI Coach game reviews are available on Chessiro Pro, which also removes coach puzzle limits »"
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessiro.com/llms.txt",
            "note_fr": "explorateur en pages publiques (chessiro.com/openings) + API publique /api/openings, aucun paywall"
          },
          {
            "code": "B6",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessiro.com/llms.txt",
            "note_fr": "« Every chess opening explained with moves, ECO codes, and plans » — pages publiques sans paywall"
          },
          {
            "code": "C1",
            "status": "quota-symbolic",
            "quota": "2 Smart Shuffle sessions per week",
            "source_url": "https://chessiro.com/pricing",
            "note_fr": "2/semaine, sous la frontière des 5 exercices/jour"
          },
          {
            "code": "C2",
            "status": "quota-symbolic",
            "quota": "Limited Custom Puzzles",
            "source_url": "https://chessiro.com/pricing",
            "note_fr": "« Limited » sans nombre publié"
          },
          {
            "code": "C3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C8",
            "status": "quota-symbolic",
            "quota": "2 Smart Shuffle sessions per week",
            "source_url": "https://chessiro.com/pricing",
            "note_fr": "la répétition espacée vit dans les sessions Smart Shuffle, plafonnées en Free"
          },
          {
            "code": "C9",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessiro.com/pricing",
            "note_fr": "critère informationnel — « Free forever — no card required »"
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessiro.com/pricing",
            "note_fr": "critère informationnel"
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessiro.com/pricing",
            "note_fr": "critère informationnel — « Billed monthly, cancel anytime »"
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessiro.com/pricing",
            "note_fr": "critère informationnel"
          },
          {
            "code": "E1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessiro.com/llms.txt",
            "note_fr": "critère informationnel — « Verified, engine-grounded explanations »"
          },
          {
            "code": "E3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessiro.com/about",
            "note_fr": "critère informationnel"
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessiro.com/about",
            "note_fr": "critère informationnel"
          },
          {
            "code": "F1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessiro.com/about",
            "note_fr": "critère informationnel"
          },
          {
            "code": "F3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessiro.com/about",
            "note_fr": "critère informationnel"
          },
          {
            "code": "G1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessiro.com/play",
            "note_fr": "« Play Online — Connect Lichess to play with players across the world » ; aucun paywall, compte gratuit requis"
          },
          {
            "code": "G2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessiro.com/about",
            "note_fr": "« Play a bot free » ; /play : « Human-like bots that adapt to train you at any level »"
          },
          {
            "code": "G3",
            "status": "undocumented",
            "quota": null,
            "source_url": null,
            "note_fr": "« Replay mistakes » (home) n'est rattaché à aucun palier sur pricing/support"
          },
          {
            "code": "G4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessiro.com/llms.txt",
            "note_fr": "critère informationnel — web seul"
          },
          {
            "code": "H2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessiro.com/about",
            "note_fr": "critère informationnel"
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessiro.com/api/status",
            "note_fr": "critère informationnel"
          },
          {
            "code": "I1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessiro.com/pricing",
            "note_fr": "« Review games individually » listé dans le plan Free"
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessiro.com/pricing",
            "note_fr": "critère informationnel (mécaniques d'engagement jugées sur pièces publiques)"
          },
          {
            "code": "K1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessiro.com/privacy",
            "note_fr": "critère informationnel — accès/suppression par mail"
          },
          {
            "code": "K2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessiro.com/privacy",
            "note_fr": "critère informationnel"
          },
          {
            "code": "K3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessiro.com/openapi.json",
            "note_fr": "API publique documentée, accessible sans payer"
          }
        ]
      }
    },
    {
      "slug": "chessagine",
      "name": "ChessAgine",
      "url": "https://chessagine.com/",
      "kind": "platform",
      "type": {
        "en": "Open-source analysis with LLM chat",
        "fr": "Analyse open source avec chat LLM"
      },
      "price": {
        "en": "€0 (free tools with no cap; paid tier for premium models, amount not published; BYOK)",
        "fr": "0 € (outils gratuits sans plafond ; palier payant pour modèles premium, montant non publié ; BYOK)"
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 3.24,
      "unweighted_score": 3.14,
      "category_scores": {
        "A": 2.9,
        "B": 1.1,
        "C": 2.2,
        "D": 9.2,
        "E": 4.2,
        "F": 1.3,
        "G": 2.5,
        "H": 1.3,
        "I": 1.7,
        "J": 2.5,
        "K": 5.6
      },
      "scores": {
        "A": [
          2,
          2,
          1,
          0,
          2,
          0,
          0,
          0
        ],
        "B": [
          0,
          0,
          0,
          0,
          2,
          0
        ],
        "C": [
          2,
          2,
          0,
          0,
          0,
          0,
          2,
          0,
          0
        ],
        "D": [
          3,
          3,
          2,
          3
        ],
        "E": [
          0,
          0,
          3,
          2
        ],
        "F": [
          0,
          0,
          0,
          0,
          2
        ],
        "G": [
          0,
          2,
          1,
          0
        ],
        "H": [
          1,
          0,
          0,
          0,
          1
        ],
        "I": [
          1,
          0,
          1,
          0
        ],
        "J": [
          0,
          1,
          0,
          2
        ],
        "K": [
          1,
          1,
          3
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 3.24,
        "criteria": [
          {
            "code": "A1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessagine.com/docs",
            "note_fr": "« all chess tools free, no daily caps » (docs, relevé 30/08) ; JSON-LD servi le 02/09 : offers price 0"
          },
          {
            "code": "A2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessagine.com/docs",
            "note_fr": "Stockfish tourne dans le navigateur ; meta servie : « free game reviews, neural nets analysis »"
          },
          {
            "code": "A3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessagine.com/docs",
            "note_fr": "« all chess tools free, no daily caps »"
          },
          {
            "code": "A4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessagine.com/docs",
            "note_fr": "chat LLM gratuit (BYOK possible) ; seul le palier payant donne les modèles premium, montant non publié"
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessagine.com/docs",
            "note_fr": "statistiques maîtres Lichess — « all chess tools free, no daily caps »"
          },
          {
            "code": "B6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessagine.com/docs",
            "note_fr": "puzzles générés depuis ses parties — outil gratuit sans plafond"
          },
          {
            "code": "C2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessagine.com/docs",
            "note_fr": "base de puzzles Lichess par thème/difficulté — gratuit sans plafond"
          },
          {
            "code": "C3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C7",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessagine.com/docs",
            "note_fr": "cote de puzzles affichée — outil gratuit sans plafond"
          },
          {
            "code": "C8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C9",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessagine.com/docs",
            "note_fr": "critère informationnel — « all chess tools free, no daily caps »"
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessagine.com/docs",
            "note_fr": "critère informationnel — cœur gratuit (JSON-LD : price 0)"
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessagine.com/docs",
            "note_fr": "critère informationnel"
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessagine.com/docs",
            "note_fr": "critère informationnel — un seul palier payant (modèles premium)"
          },
          {
            "code": "E1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/jalpp/chessagineweb",
            "note_fr": "critère informationnel — code AGPL-3.0 public"
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessagine.com/",
            "note_fr": "critère informationnel"
          },
          {
            "code": "F1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://api.github.com/repos/jalpp/chessagineweb",
            "note_fr": "critère informationnel — dépôt actif"
          },
          {
            "code": "G1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessagine.com/docs",
            "note_fr": "Maia2/3 et Leela T1-256 dans le navigateur — gratuit sans plafond"
          },
          {
            "code": "G3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessagine.com/",
            "note_fr": "Position Board — outil gratuit sans plafond"
          },
          {
            "code": "G4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessagine.com/docs",
            "note_fr": "critère informationnel — navigateur seul"
          },
          {
            "code": "H2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessagine.com/docs",
            "note_fr": "critère informationnel — moteur local, LLM distant"
          },
          {
            "code": "I1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessagine.com/docs",
            "note_fr": "« Search and import Lichess user games », stats joueur Lichess — gratuit sans plafond"
          },
          {
            "code": "I2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessagine.com/",
            "note_fr": "« Position Board: Set up any chess position » — gratuit sans plafond"
          },
          {
            "code": "I4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/jalpp/chessagineweb",
            "note_fr": "critère informationnel — Discord/GitHub publics"
          },
          {
            "code": "J3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessagine.com/",
            "note_fr": "critère informationnel"
          },
          {
            "code": "K1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessagine.com/docs",
            "note_fr": "export PGN — gratuit sans plafond"
          },
          {
            "code": "K2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessagine.com/docs",
            "note_fr": "critère informationnel — « never stores chat messages »"
          },
          {
            "code": "K3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/jalpp/chessagineweb",
            "note_fr": "critère informationnel — AGPL-3.0"
          }
        ]
      }
    },
    {
      "slug": "chessmood",
      "name": "ChessMood",
      "url": "https://chessmood.com/",
      "kind": "platform",
      "type": {
        "en": "GM video courses and community",
        "fr": "Cours vidéo de GM et communauté"
      },
      "price": {
        "en": "PRO annual price shown $1,188/yr ≈ €1,093 ($1 ≈ €0.92); Essential $948/yr ≈ €872; monthly $129/$99",
        "fr": "PRO annuel affiché 1 188 $/an ≈ 1 093 € (1 $ ≈ 0,92 €) ; Essential 948 $/an ≈ 872 € ; mensuel 129 $/99 $"
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 3.23,
      "unweighted_score": 3.25,
      "category_scores": {
        "A": 0,
        "B": 3.9,
        "C": 4.4,
        "D": 4.2,
        "E": 2.5,
        "F": 9.3,
        "G": 0.8,
        "H": 1.3,
        "I": 0,
        "J": 5,
        "K": 4.4
      },
      "scores": {
        "A": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          1,
          2,
          0,
          1,
          0,
          3
        ],
        "C": [
          0,
          1,
          2,
          3,
          2,
          2,
          1,
          0,
          1
        ],
        "D": [
          1,
          0,
          2,
          2
        ],
        "E": [
          1,
          1,
          1,
          0
        ],
        "F": [
          3,
          3,
          3,
          2,
          3
        ],
        "G": [
          0,
          0,
          0,
          1
        ],
        "H": [
          1,
          0,
          0,
          0,
          1
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          3,
          2,
          0,
          1
        ],
        "K": [
          2,
          1,
          1
        ]
      },
      "evidence_urls": {
        "A": [
          "https://chessmood.com/",
          "https://chessmood.com/",
          "https://chessmood.com/",
          "https://chessmood.com/",
          "https://chessmood.com/",
          "https://chessmood.com/our-story",
          "https://chessmood.com/",
          "https://chessmood.com/"
        ],
        "B": [
          "https://chessmood.com/courses",
          "https://chessmood.com/course/alekhine-defense",
          "https://chessmood.com/",
          "https://chessmood.com/course/alekhine-defense",
          "https://chessmood.com/",
          "https://chessmood.com/courses"
        ],
        "C": [
          "https://chessmood.com/",
          "https://chessmood.com/become-a-pro",
          "https://chessmood.com/courses",
          "https://chessmood.com/courses",
          "https://chessmood.com/courses",
          "https://chessmood.com/courses",
          "https://chessmood.com/courses",
          "https://chessmood.com/become-a-pro",
          "https://chessmood.com/chess-study-plans"
        ],
        "D": [
          "https://chessmood.com/course/alekhine-defense",
          "https://chessmood.com/become-a-pro",
          "https://chessmood.com/refund-policy",
          "https://chessmood.com/become-a-pro"
        ],
        "E": [
          "https://chessmood.com/success-stories",
          "https://chessmood.com/forum",
          "https://chessmood.com/become-a-pro",
          "https://chessmood.com/success-stories"
        ],
        "F": [
          "https://chessmood.com/chess-study-plans",
          "https://chessmood.com/our-story",
          "https://chessmood.com/course/alekhine-defense",
          "https://chessmood.com/chess-study-plans",
          "https://chessmood.com/daily-puzzle"
        ],
        "G": [
          "https://chessmood.com/",
          "https://chessmood.com/",
          "https://chessmood.com/",
          "https://chessmood.com/events"
        ],
        "H": [
          "https://chessmood.com/",
          "https://chessmood.com/success-stories",
          "https://chessmood.com/",
          "https://chessmood.com/",
          "https://www.iubenda.com/privacy-policy/57750022"
        ],
        "I": [
          "https://chessmood.com/",
          "https://chessmood.com/courses",
          "https://chessmood.com/",
          "https://chessmood.com/"
        ],
        "J": [
          "https://chessmood.com/become-a-pro",
          "https://chessmood.com/forum",
          "https://chessmood.com/become-a-pro",
          "https://chessmood.com/moodcoin"
        ],
        "K": [
          "https://chessmood.com/become-a-pro",
          "https://www.iubenda.com/privacy-policy/57750022",
          "https://chessmood.com/become-a-pro"
        ]
      },
      "sources": [
        "https://chessmood.com/our-story",
        "https://chessmood.com/",
        "https://chessmood.com/become-a-pro",
        "https://chessmood.com/refund-policy",
        "https://chessmood.com/events",
        "https://chessmood.com/daily-puzzle",
        "https://www.iubenda.com/privacy-policy/57750022"
      ],
      "review_url": "https://www.chesspivot.com/en/reviews/chessmood",
      "free_access": null
    },
    {
      "slug": "duolingo-chess",
      "name": "Duolingo Chess",
      "url": "https://blog.duolingo.com/chess-course/",
      "kind": "platform",
      "type": {
        "en": "gamified beginner course inside Duolingo",
        "fr": "cours d’initiation gamifié dans Duolingo"
      },
      "price": {
        "en": "€0: the chess course is free. Super Duolingo stays optional (in-app purchases $9.99–119.99); its billing period: not available.",
        "fr": "0 € : le cours d’échecs est gratuit. Super Duolingo reste optionnel (achats intégrés 9,99–119,99 $) ; sa période de facturation : non disponible."
      },
      "languages": 20,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 3.17,
      "unweighted_score": 2.84,
      "category_scores": {
        "A": 2.9,
        "B": 0.6,
        "C": 3,
        "D": 6.7,
        "E": 2.5,
        "F": 4.7,
        "G": 2.5,
        "H": 6.7,
        "I": 0.8,
        "J": 0.8,
        "K": 0
      },
      "scores": {
        "A": [
          0,
          2,
          0,
          1,
          2,
          0,
          1,
          1
        ],
        "B": [
          0,
          0,
          0,
          0,
          0,
          1
        ],
        "C": [
          1,
          1,
          0,
          1,
          0,
          0,
          1,
          2,
          2
        ],
        "D": [
          2,
          3,
          1,
          2
        ],
        "E": [
          0,
          0,
          1,
          2
        ],
        "F": [
          1,
          0,
          2,
          2,
          2
        ],
        "G": [
          1,
          2,
          0,
          0
        ],
        "H": [
          3,
          3,
          3,
          0,
          1
        ],
        "I": [
          0,
          0,
          0,
          1
        ],
        "J": [
          0,
          1,
          0,
          0
        ],
        "K": [
          0,
          0,
          0
        ]
      },
      "evidence_urls": {
        "A": [
          "https://blog.duolingo.com/chess-game-review/",
          "https://blog.duolingo.com/chess-game-review/",
          "https://blog.duolingo.com/chess-game-review/",
          "https://blog.duolingo.com/chess-game-review/",
          "https://blog.duolingo.com/chess-game-review/",
          "https://blog.duolingo.com/chess-game-review/",
          "https://blog.duolingo.com/chess-course/",
          "https://blog.duolingo.com/chess-course/"
        ],
        "B": [
          "https://blog.duolingo.com/chess-course/",
          "https://blog.duolingo.com/chess-course/",
          "https://blog.duolingo.com/chess-game-review/",
          "https://blog.duolingo.com/chess-course/",
          "https://blog.duolingo.com/chess-course/",
          "https://blog.duolingo.com/hub/chess/"
        ],
        "C": [
          "https://blog.duolingo.com/chess-game-review/",
          "https://blog.duolingo.com/chess-course/",
          "https://blog.duolingo.com/chess-course/",
          "https://blog.duolingo.com/chess-course/",
          "https://blog.duolingo.com/chess-course/",
          "https://blog.duolingo.com/chess-course/",
          "https://blog.duolingo.com/chess-course/",
          "https://blog.duolingo.com/chess-course/",
          "https://blog.duolingo.com/chess-course/"
        ],
        "D": [
          "https://blog.duolingo.com/chess-course/",
          "https://blog.duolingo.com/chess-course/",
          "https://apps.apple.com/us/app/duolingo-language-lessons/id570060128",
          "https://apps.apple.com/us/app/id570060128"
        ],
        "E": [
          "https://blog.duolingo.com/chess-course/",
          "https://blog.duolingo.com/chess-course/",
          "https://blog.duolingo.com/chess-game-review/",
          "https://blog.duolingo.com/chess-course/"
        ],
        "F": [
          "https://blog.duolingo.com/chess-course/",
          "https://blog.duolingo.com/chess-course/",
          "https://blog.duolingo.com/chess-course/",
          "https://blog.duolingo.com/chess-course/",
          "https://blog.duolingo.com/chess-game-review/"
        ],
        "G": [
          "https://blog.duolingo.com/chess-course/",
          "https://blog.duolingo.com/chess-course/",
          "https://blog.duolingo.com/chess-course/",
          "https://blog.duolingo.com/chess-course/"
        ],
        "H": [
          "https://blog.duolingo.com/chess-course/",
          "https://play.google.com/store/apps/details?id=com.duolingo",
          "https://www.duolingo.com/",
          "https://blog.duolingo.com/chess-course/",
          "https://blog.duolingo.com/hub/chess/"
        ],
        "I": [
          "https://blog.duolingo.com/chess-course/",
          "https://blog.duolingo.com/chess-game-review/",
          "https://blog.duolingo.com/chess-course/",
          "https://blog.duolingo.com/chess-game-review/"
        ],
        "J": [
          "https://blog.duolingo.com/chess-course/",
          "https://en.wikipedia.org/wiki/Duolingo",
          "https://blog.duolingo.com/chess-course/",
          "https://apps.apple.com/us/app/duolingo-language-lessons/id570060128"
        ],
        "K": [
          "https://www.duolingo.com/privacy",
          "https://apps.apple.com/us/app/duolingo-language-lessons/id570060128",
          "https://blog.duolingo.com/chess-course/"
        ]
      },
      "sources": [
        "https://blog.duolingo.com/chess-course/",
        "https://blog.duolingo.com/chess-game-review/",
        "https://en.wikipedia.org/wiki/Duolingo"
      ],
      "review_url": "https://www.chesspivot.com/en/reviews/duolingo-chess",
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 3.17,
        "criteria": [
          {
            "code": "A1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://blog.duolingo.com/chess-game-review/",
            "note_fr": "Game Review annoncé sans paywall ni limite (iOS d'abord) ; Old School Chess 07/2026 : « no chess-specific paywall », « full access with ads »"
          },
          {
            "code": "A3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://blog.duolingo.com/chess-game-review/",
            "note_fr": "« pinned pieces, missed threats, and tactical mistakes » — inclus dans le Game Review, sans paywall publié"
          },
          {
            "code": "A5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://blog.duolingo.com/chess-game-review/",
            "note_fr": "explications d'Oscar dans le Game Review, sans paywall publié"
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A7",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://blog.duolingo.com/chess-course/",
            "note_fr": "ELO interne — « available for free to all learners »"
          },
          {
            "code": "A8",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://blog.duolingo.com/chess-course/",
            "note_fr": "« random opponent with a similar Elo rating » — cours gratuit pour tous"
          },
          {
            "code": "B1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B6",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://blog.duolingo.com/hub/chess/",
            "note_fr": "billets de blog publics, sans compte"
          },
          {
            "code": "C1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://blog.duolingo.com/chess-game-review/",
            "note_fr": "rejouer les moments clés de sa partie — Game Review sans paywall publié"
          },
          {
            "code": "C2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://blog.duolingo.com/chess-course/",
            "note_fr": "« Like all of Duolingo's learning content, the Chess course will be available for free to all learners » — pub acceptée ; cœurs non documentés côté échecs sur les pages publiques"
          },
          {
            "code": "C3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://blog.duolingo.com/chess-course/",
            "note_fr": "leçons de stratégie du cours gratuit"
          },
          {
            "code": "C5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C7",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://blog.duolingo.com/chess-course/",
            "note_fr": "« Lessons gradually increase in difficulty » — cours gratuit"
          },
          {
            "code": "C8",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://blog.duolingo.com/chess-course/",
            "note_fr": "« Duolingo's spaced repetition algorithm » — cours gratuit"
          },
          {
            "code": "C9",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://blog.duolingo.com/chess-course/",
            "note_fr": "parcours linéaire du cours gratuit"
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://blog.duolingo.com/chess-course/",
            "note_fr": "critère informationnel — « available for free to all learners »"
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://blog.duolingo.com/chess-course/",
            "note_fr": "critère informationnel — Super optionnel (fiche App Store : achats intégrés 9,99–119,99 $)"
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/duolingo-language-lessons/id570060128",
            "note_fr": "critère informationnel"
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/duolingo-language-lessons/id570060128",
            "note_fr": "critère informationnel"
          },
          {
            "code": "E1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://blog.duolingo.com/chess-game-review/",
            "note_fr": "critère informationnel"
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://blog.duolingo.com/chess-course/",
            "note_fr": "critère informationnel"
          },
          {
            "code": "F1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://blog.duolingo.com/chess-course/",
            "note_fr": "« beginner to intermediate … around a 1500 Elo » — cours gratuit"
          },
          {
            "code": "F2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://blog.duolingo.com/chess-course/",
            "note_fr": "leçons guidées + puzzles interactifs du cours gratuit"
          },
          {
            "code": "F4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://blog.duolingo.com/chess-course/",
            "note_fr": "« from guided instructions to open-ended challenges » — cours gratuit"
          },
          {
            "code": "F5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://blog.duolingo.com/chess-game-review/",
            "note_fr": "critère informationnel — nouveautés publiées sur le blog"
          },
          {
            "code": "G1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://blog.duolingo.com/chess-course/",
            "note_fr": "« let Oscar find you a random opponent with a similar Elo rating » — cours gratuit pour tous ; Old School Chess 07/2026 : aucun paywall échecs"
          },
          {
            "code": "G2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://blog.duolingo.com/chess-course/",
            "note_fr": "Oscar (mini-parties et parties complètes) — cours gratuit"
          },
          {
            "code": "G3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://blog.duolingo.com/chess-course/",
            "note_fr": "critère informationnel — « iOS and Android … also available on web »"
          },
          {
            "code": "H2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://play.google.com/store/apps/details?id=com.duolingo",
            "note_fr": "critère informationnel — notes stores publiques"
          },
          {
            "code": "H3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.duolingo.com/",
            "note_fr": "critère informationnel"
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://blog.duolingo.com/hub/chess/",
            "note_fr": "critère informationnel"
          },
          {
            "code": "I1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://blog.duolingo.com/chess-game-review/",
            "note_fr": "historique des parties jouées dans l'app — Game Review sans paywall publié"
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://en.wikipedia.org/wiki/Duolingo",
            "note_fr": "critère informationnel"
          },
          {
            "code": "J3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "K1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "K2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "K3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          }
        ]
      }
    },
    {
      "slug": "betterchess",
      "name": "BetterChess",
      "url": "https://betterchess.co/",
      "kind": "platform",
      "type": {
        "en": "AI voice coach during games against bots",
        "fr": "coach IA vocal pendant parties contre bots"
      },
      "price": {
        "en": "$129/yr ≈ €119 (Pro annual price shown, betterchess.co/terms and /faq); $19.99/mo",
        "fr": "129 $/an ≈ 119 € (Pro annuel affiché, betterchess.co/terms et /faq) ; 19,99 $/mois"
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 3.1,
      "unweighted_score": 2.49,
      "category_scores": {
        "A": 3.3,
        "B": 2.2,
        "C": 3,
        "D": 5.8,
        "E": 5.8,
        "F": 1.3,
        "G": 0.8,
        "H": 1.3,
        "I": 0,
        "J": 1.7,
        "K": 2.2
      },
      "scores": {
        "A": [
          1,
          2,
          2,
          1,
          2,
          0,
          0,
          0
        ],
        "B": [
          1,
          2,
          0,
          0,
          0,
          1
        ],
        "C": [
          1,
          1,
          0,
          1,
          1,
          0,
          1,
          2,
          1
        ],
        "D": [
          2,
          1,
          2,
          2
        ],
        "E": [
          0,
          2,
          2,
          3
        ],
        "F": [
          0,
          0,
          2,
          0,
          0
        ],
        "G": [
          0,
          1,
          0,
          0
        ],
        "H": [
          1,
          0,
          0,
          0,
          1
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          0,
          0,
          0,
          2
        ],
        "K": [
          1,
          1,
          0
        ]
      },
      "evidence_urls": {
        "A": [
          "https://betterchess.co/review",
          "https://betterchess.co/review",
          "https://betterchess.co/",
          "https://betterchess.co/",
          "https://betterchess.co/",
          "https://betterchess.co/faq",
          "https://betterchess.co/faq",
          "https://betterchess.co/"
        ],
        "B": [
          "https://betterchess.co/",
          "https://betterchess.co/",
          "https://betterchess.co/",
          "https://betterchess.co/",
          "https://betterchess.co/",
          "https://betterchess.co/"
        ],
        "C": [
          "https://betterchess.co/faq",
          "https://betterchess.co/",
          "https://betterchess.co/faq",
          "https://betterchess.co/games",
          "https://betterchess.co/",
          "https://betterchess.co/",
          "https://betterchess.co/",
          "https://betterchess.co/",
          "https://betterchess.co/faq"
        ],
        "D": [
          "https://betterchess.co/review",
          "https://betterchess.co/terms",
          "https://betterchess.co/terms",
          "https://betterchess.co/faq"
        ],
        "E": [
          "https://betterchess.co/about",
          "https://betterchess.co/about",
          "https://betterchess.co/privacy",
          "https://betterchess.co/"
        ],
        "F": [
          "https://betterchess.co/",
          "https://betterchess.co/about",
          "https://betterchess.co/",
          "https://betterchess.co/",
          "https://betterchess.co/"
        ],
        "G": [
          "https://betterchess.co/",
          "https://betterchess.co/",
          "https://betterchess.co/",
          "https://betterchess.co/"
        ],
        "H": [
          "https://betterchess.co/faq",
          "https://betterchess.co/",
          "https://betterchess.co/",
          "https://betterchess.co/faq",
          "https://betterchess.co/privacy"
        ],
        "I": [
          "https://betterchess.co/players",
          "https://betterchess.co/games",
          "https://betterchess.co/faq",
          "https://betterchess.co/"
        ],
        "J": [
          "https://betterchess.co/",
          "https://betterchess.co/",
          "https://betterchess.co/",
          "https://betterchess.co/"
        ],
        "K": [
          "https://betterchess.co/privacy",
          "https://betterchess.co/privacy",
          "https://betterchess.co/"
        ]
      },
      "sources": [
        "https://betterchess.co/review",
        "https://betterchess.co/",
        "https://betterchess.co/faq",
        "https://betterchess.co/games",
        "https://betterchess.co/terms",
        "https://betterchess.co/about",
        "https://betterchess.co/privacy",
        "https://betterchess.co/players",
        "https://betterchess.co/clubs",
        "https://betterchess.co/best-ai-chess-coaches"
      ],
      "review_url": "https://www.chesspivot.com/en/reviews/betterchess",
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 2.57,
        "criteria": [
          {
            "code": "A1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://betterchess.co/review",
            "note_fr": "« finds the turning point in any game you paste … for free, with no sign-up and no daily cap on pasted games »"
          },
          {
            "code": "A2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://betterchess.co/review",
            "note_fr": "« It runs Stockfish right in your browser » — revue gratuite sans plafond"
          },
          {
            "code": "A3",
            "status": "paid",
            "quota": null,
            "source_url": "https://betterchess.co/faq",
            "note_fr": "modèle de faiblesses = coaching : « The assessment helps set your starting level; Pro unlocks the full coaching » (Pro 5,99 $/mois)"
          },
          {
            "code": "A4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://betterchess.co/review",
            "note_fr": "la revue gratuite explique les fautes tactiques de la partie collée"
          },
          {
            "code": "A5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://betterchess.co/review",
            "note_fr": "explication « in plain language » dans la revue gratuite, sans plafond"
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://betterchess.co/openings",
            "note_fr": "« Try it vs a real engine — free, no sign-up » ; 60+ ouvertures"
          },
          {
            "code": "B2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://betterchess.co/openings",
            "note_fr": "entraînement contre moteur qui « grades every move » — « free, no sign-up »"
          },
          {
            "code": "B3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B6",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://betterchess.co/openings",
            "note_fr": "« ideas, plans & a board you can play » — pages publiques gratuites"
          },
          {
            "code": "C1",
            "status": "paid",
            "quota": null,
            "source_url": "https://betterchess.co/faq",
            "note_fr": "pratique personnalisée sur ses points faibles = coaching Pro (« Pro unlocks the full coaching »)"
          },
          {
            "code": "C2",
            "status": "quota-symbolic",
            "quota": "The daily puzzle is free to try with no sign-up",
            "source_url": "https://betterchess.co/daily",
            "note_fr": "1 puzzle publié par jour (minuit UTC), sous la frontière des 5 exercices/jour ; aucune banque de tactiques illimitée étiquetée gratuite sur les pages actuelles"
          },
          {
            "code": "C3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://betterchess.co/games",
            "note_fr": "50+ parties célèbres annotées, jouables dans le navigateur sans inscription"
          },
          {
            "code": "C5",
            "status": "paid",
            "quota": null,
            "source_url": "https://betterchess.co/faq",
            "note_fr": "le coach qui « interrupts » avant la gaffe = coaching live, produit payant (« Pro unlocks the full coaching »)"
          },
          {
            "code": "C6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C7",
            "status": "paid",
            "quota": null,
            "source_url": "https://betterchess.co/faq",
            "note_fr": "ajustement du niveau pendant les parties coachées contre bots — rattaché au coaching Pro"
          },
          {
            "code": "C8",
            "status": "paid",
            "quota": null,
            "source_url": "https://betterchess.co/faq",
            "note_fr": "« puzzles on your weak motifs, scheduled with spaced repetition » = personnalisation du coaching Pro"
          },
          {
            "code": "C9",
            "status": "paid",
            "quota": null,
            "source_url": "https://betterchess.co/faq",
            "note_fr": "conseils du coach = coaching Pro"
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://betterchess.co/review",
            "note_fr": "critère informationnel"
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://betterchess.co/terms",
            "note_fr": "critère informationnel — « US $5.99 per month » ; ATTENTION : le prix a changé depuis le relevé du 30/08 (129 $/an + essai 7 j → 5,99 $/mois sans essai)"
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://betterchess.co/terms",
            "note_fr": "critère informationnel — « There is no free trial », « non-refundable », « cancel at any time »"
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://betterchess.co/faq",
            "note_fr": "critère informationnel"
          },
          {
            "code": "E1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://betterchess.co/about",
            "note_fr": "critère informationnel — « All position analysis… performed by the Stockfish chess engine »"
          },
          {
            "code": "E3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://betterchess.co/privacy",
            "note_fr": "critère informationnel"
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://betterchess.co/openings",
            "note_fr": "critère informationnel — « we make no guarantee you'll reach 1800 or any rating »"
          },
          {
            "code": "F1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://betterchess.co/games",
            "note_fr": "critère informationnel — parties annotées + exercices interactifs publics"
          },
          {
            "code": "F4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://betterchess.co/openings",
            "note_fr": "jouer contre « a real engine — free, no sign-up » (pages d'ouvertures)"
          },
          {
            "code": "G3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://betterchess.co/faq",
            "note_fr": "critère informationnel — web seul"
          },
          {
            "code": "H2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://betterchess.co/privacy",
            "note_fr": "critère informationnel"
          },
          {
            "code": "I1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://betterchess.co/daily",
            "note_fr": "critère informationnel — streak optionnelle du puzzle quotidien, sans monnaie"
          },
          {
            "code": "K1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://betterchess.co/privacy",
            "note_fr": "critère informationnel — export par mail à [adresse de contact]"
          },
          {
            "code": "K2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://betterchess.co/privacy",
            "note_fr": "critère informationnel"
          },
          {
            "code": "K3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          }
        ]
      }
    },
    {
      "slug": "chessx",
      "name": "ChessX",
      "url": "https://chessx.sourceforge.io/",
      "kind": "platform",
      "type": {
        "en": "open-source PGN database",
        "fr": "base de données PGN open source"
      },
      "price": {
        "en": "free (free software GPL, chessx.sourceforge.io)",
        "fr": "gratuit (logiciel libre GPL, chessx.sourceforge.io)"
      },
      "languages": 12,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 3.09,
      "unweighted_score": 3.34,
      "category_scores": {
        "A": 1.3,
        "B": 3.3,
        "C": 0,
        "D": 10,
        "E": 4.2,
        "F": 0.7,
        "G": 0,
        "H": 3.3,
        "I": 5.8,
        "J": 2.5,
        "K": 5.6
      },
      "scores": {
        "A": [
          2,
          1,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          2,
          1,
          0,
          0,
          2,
          1
        ],
        "C": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "D": [
          3,
          3,
          3,
          3
        ],
        "E": [
          0,
          0,
          3,
          2
        ],
        "F": [
          0,
          0,
          0,
          0,
          1
        ],
        "G": [
          0,
          0,
          0,
          0
        ],
        "H": [
          0,
          0,
          2,
          0,
          3
        ],
        "I": [
          2,
          1,
          1,
          3
        ],
        "J": [
          0,
          1,
          0,
          2
        ],
        "K": [
          2,
          0,
          3
        ]
      },
      "evidence_urls": {
        "A": [
          "https://github.com/Isarhamster/chessx",
          "https://chessx.sourceforge.io/",
          "https://chessx.sourceforge.io/",
          "https://chessx.sourceforge.io/",
          "https://chessx.sourceforge.io/",
          "https://chessx.sourceforge.io/",
          "https://chessx.sourceforge.io/",
          "https://chessx.sourceforge.io/"
        ],
        "B": [
          "https://chessx.sourceforge.io/",
          "https://chessx.sourceforge.io/",
          "https://chessx.sourceforge.io/",
          "https://chessx.sourceforge.io/",
          "https://chessx.sourceforge.io/",
          "https://chessx.sourceforge.io/"
        ],
        "C": [
          "https://chessx.sourceforge.io/",
          "https://chessx.sourceforge.io/",
          "https://chessx.sourceforge.io/",
          "https://chessx.sourceforge.io/",
          "https://chessx.sourceforge.io/",
          "https://chessx.sourceforge.io/",
          "https://chessx.sourceforge.io/",
          "https://chessx.sourceforge.io/",
          "https://chessx.sourceforge.io/"
        ],
        "D": [
          "https://chessx.sourceforge.io/",
          "https://chessx.sourceforge.io/",
          "https://chessx.sourceforge.io/",
          "https://chessx.sourceforge.io/"
        ],
        "E": [
          "https://chessx.sourceforge.io/",
          "https://chessx.sourceforge.io/",
          "https://github.com/Isarhamster/chessx",
          "https://chessx.sourceforge.io/"
        ],
        "F": [
          "https://chessx.sourceforge.io/",
          "https://chessx.sourceforge.io/",
          "https://chessx.sourceforge.io/",
          "https://chessx.sourceforge.io/",
          "https://github.com/Isarhamster/chessx/commits/master"
        ],
        "G": [
          "https://chessx.sourceforge.io/",
          "https://chessx.sourceforge.io/",
          "https://chessx.sourceforge.io/",
          "https://chessx.sourceforge.io/"
        ],
        "H": [
          "https://chessx.sourceforge.io/",
          "https://sourceforge.net/projects/chessx/files/",
          "https://chessx.sourceforge.io",
          "https://chessx.sourceforge.io/",
          "https://chessx.sourceforge.io/"
        ],
        "I": [
          "https://chessx.sourceforge.io/",
          "https://github.com/Isarhamster/chessx",
          "https://chessx.sourceforge.io/",
          "https://chessx.sourceforge.io/"
        ],
        "J": [
          "https://chessx.sourceforge.io/",
          "https://chessx.sourceforge.io/",
          "https://chessx.sourceforge.io/",
          "https://chessx.sourceforge.io/"
        ],
        "K": [
          "https://github.com/Isarhamster/chessx",
          "https://chessx.sourceforge.io/",
          "https://github.com/Isarhamster/chessx"
        ]
      },
      "sources": [
        "https://chessx.sourceforge.io/",
        "https://github.com/Isarhamster/chessx",
        "https://github.com/Isarhamster/chessx/blob/master/ChangeLog.md",
        "https://github.com/Isarhamster/chessx/commits/master",
        "https://sourceforge.net/projects/chessx/files/"
      ],
      "review_url": "https://www.chesspivot.com/en/reviews/chessx",
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 3.09,
        "criteria": [
          {
            "code": "A1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessx.sourceforge.io/",
            "note_fr": "logiciel libre local (GPL-2.0), aucune fonction payante"
          },
          {
            "code": "A2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessx.sourceforge.io/",
            "note_fr": "« Analyze with engines of your choice » — logiciel libre local"
          },
          {
            "code": "A3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessx.sourceforge.io/",
            "note_fr": "bases PGN + arbre de variantes — logiciel libre local"
          },
          {
            "code": "B2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessx.sourceforge.io/",
            "note_fr": "relecture des lignes — logiciel libre local"
          },
          {
            "code": "B3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessx.sourceforge.io/",
            "note_fr": "« Lichess' master openings book » + arbre de la base — logiciel libre local"
          },
          {
            "code": "B6",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessx.sourceforge.io/",
            "note_fr": "noms et coups ECO — logiciel libre local"
          },
          {
            "code": "C1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C9",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessx.sourceforge.io/",
            "note_fr": "critère informationnel — « free and open source »"
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessx.sourceforge.io/",
            "note_fr": "critère informationnel — 0 €"
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessx.sourceforge.io/",
            "note_fr": "critère informationnel"
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessx.sourceforge.io/",
            "note_fr": "critère informationnel — aucun palier payant"
          },
          {
            "code": "E1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/Isarhamster/chessx",
            "note_fr": "critère informationnel — code GPL-2.0"
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessx.sourceforge.io/",
            "note_fr": "critère informationnel"
          },
          {
            "code": "F1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/Isarhamster/chessx/commits/master",
            "note_fr": "critère informationnel"
          },
          {
            "code": "G1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessx.sourceforge.io/",
            "note_fr": "critère informationnel — traductions livrées (dont FR)"
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessx.sourceforge.io/",
            "note_fr": "logiciel local, tout fonctionne hors-ligne"
          },
          {
            "code": "I1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessx.sourceforge.io/",
            "note_fr": "« Prepare for your opponent with personalized game statistics » — logiciel libre local"
          },
          {
            "code": "I2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/Isarhamster/chessx",
            "note_fr": "« Enter moves, variations, and comments » en PGN local — logiciel libre"
          },
          {
            "code": "I3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessx.sourceforge.io/",
            "note_fr": "saisie des coups sur l'échiquier — logiciel libre local"
          },
          {
            "code": "I4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessx.sourceforge.io/",
            "note_fr": "« Sort, filter and search games by position or text » — logiciel libre local"
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessx.sourceforge.io/",
            "note_fr": "critère informationnel — liste de diffusion + tickets publics"
          },
          {
            "code": "J3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessx.sourceforge.io/",
            "note_fr": "critère informationnel — aucune mécanique"
          },
          {
            "code": "K1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/Isarhamster/chessx",
            "note_fr": "sauvegarde PGN — logiciel libre local"
          },
          {
            "code": "K2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "K3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/Isarhamster/chessx",
            "note_fr": "critère informationnel — GPL-2.0"
          }
        ]
      }
    },
    {
      "slug": "chessgoals",
      "name": "ChessGoals",
      "url": "https://courses.chessgoals.com/",
      "kind": "platform",
      "type": {
        "en": "video/PGN courses and questionnaire audit",
        "fr": "cours vidéo/PGN et audit par questionnaire"
      },
      "price": {
        "en": "One-off purchases: courses $9 to $79, Audit $59 ≈ €54, Lifetime Access $597 ≈ €549. No subscription.",
        "fr": "Achats uniques : cours 9 à 79 $, Audit 59 $ ≈ 54 €, Lifetime Access 597 $ ≈ 549 €. Pas d’abonnement."
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 3.07,
      "unweighted_score": 2.78,
      "category_scores": {
        "A": 2.5,
        "B": 3.3,
        "C": 1.9,
        "D": 4.2,
        "E": 4.2,
        "F": 6.7,
        "G": 0,
        "H": 2,
        "I": 0,
        "J": 2.5,
        "K": 3.3
      },
      "scores": {
        "A": [
          0,
          0,
          1,
          2,
          0,
          1,
          0,
          2
        ],
        "B": [
          1,
          1,
          0,
          2,
          0,
          2
        ],
        "C": [
          0,
          1,
          1,
          1,
          0,
          0,
          0,
          0,
          2
        ],
        "D": [
          1,
          0,
          2,
          2
        ],
        "E": [
          1,
          2,
          1,
          1
        ],
        "F": [
          2,
          2,
          2,
          2,
          2
        ],
        "G": [
          0,
          0,
          0,
          0
        ],
        "H": [
          1,
          1,
          0,
          0,
          1
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          1,
          0,
          0,
          2
        ],
        "K": [
          2,
          0,
          1
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": null
    },
    {
      "slug": "opening-scanner",
      "name": "Opening Scanner",
      "url": "https://openingscanner.com/",
      "kind": "platform",
      "type": {
        "en": "free opening repertoire scanner",
        "fr": "scanner gratuit de répertoire d’ouvertures"
      },
      "price": {
        "en": "€0 (free, no account needed — openingscanner.com, MIT README).",
        "fr": "0 € (gratuit, sans compte — openingscanner.com, README MIT)."
      },
      "languages": 13,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 3.01,
      "unweighted_score": 3.27,
      "category_scores": {
        "A": 1.7,
        "B": 1.7,
        "C": 0,
        "D": 10,
        "E": 5.8,
        "F": 1.3,
        "G": 0,
        "H": 2.7,
        "I": 3.3,
        "J": 1.7,
        "K": 7.8
      },
      "scores": {
        "A": [
          3,
          0,
          1,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          1,
          0,
          1,
          0,
          1,
          0
        ],
        "C": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "D": [
          3,
          3,
          3,
          3
        ],
        "E": [
          0,
          1,
          3,
          3
        ],
        "F": [
          0,
          0,
          0,
          0,
          2
        ],
        "G": [
          0,
          0,
          0,
          0
        ],
        "H": [
          1,
          0,
          2,
          0,
          1
        ],
        "I": [
          2,
          0,
          0,
          2
        ],
        "J": [
          0,
          0,
          0,
          2
        ],
        "K": [
          2,
          2,
          3
        ]
      },
      "evidence_urls": {
        "A": [
          "https://github.com/atamano/openingscanner",
          "https://github.com/atamano/openingscanner",
          "https://github.com/atamano/openingscanner",
          "https://github.com/atamano/openingscanner",
          "https://github.com/atamano/openingscanner",
          "https://github.com/atamano/openingscanner",
          "https://github.com/atamano/openingscanner",
          "https://github.com/atamano/openingscanner"
        ],
        "B": [
          "https://github.com/atamano/openingscanner",
          "https://openingscanner.com/",
          "https://github.com/atamano/openingscanner",
          "https://github.com/atamano/openingscanner",
          "https://github.com/atamano/openingscanner",
          "https://openingscanner.com/"
        ],
        "C": [
          "https://openingscanner.com/",
          "https://openingscanner.com/",
          "https://openingscanner.com/",
          "https://openingscanner.com/",
          "https://openingscanner.com/",
          "https://openingscanner.com/",
          "https://openingscanner.com/",
          "https://openingscanner.com/",
          "https://openingscanner.com/"
        ],
        "D": [
          "https://openingscanner.com/",
          "https://openingscanner.com/",
          "https://openingscanner.com/",
          "https://github.com/atamano/openingscanner"
        ],
        "E": [
          "https://openingscanner.com/",
          "https://github.com/atamano/openingscanner",
          "https://github.com/atamano/openingscanner",
          "https://github.com/atamano/openingscanner"
        ],
        "F": [
          "https://openingscanner.com/",
          "https://openingscanner.com/",
          "https://openingscanner.com/",
          "https://openingscanner.com/",
          "https://github.com/atamano/openingscanner"
        ],
        "G": [
          "https://openingscanner.com/",
          "https://openingscanner.com/",
          "https://openingscanner.com/",
          "https://openingscanner.com/"
        ],
        "H": [
          "https://openingscanner.com/",
          "https://openingscanner.com/",
          "https://openingscanner.com/",
          "https://openingscanner.com/",
          "https://github.com/atamano/openingscanner"
        ],
        "I": [
          "https://github.com/atamano/openingscanner",
          "https://openingscanner.com/",
          "https://openingscanner.com/",
          "https://github.com/atamano/openingscanner"
        ],
        "J": [
          "https://openingscanner.com/",
          "https://github.com/atamano/openingscanner",
          "https://openingscanner.com/",
          "https://openingscanner.com/"
        ],
        "K": [
          "https://github.com/atamano/openingscanner",
          "https://github.com/atamano/openingscanner",
          "https://github.com/atamano/openingscanner"
        ]
      },
      "sources": [
        "https://openingscanner.com/",
        "https://www.openingscanner.com/en",
        "https://github.com/atamano/openingscanner",
        "https://github.com/atamano/openingscanner/commits/main",
        "https://github.com/atamano"
      ],
      "review_url": "https://www.chesspivot.com/en/reviews/opening-scanner",
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 3.01,
        "criteria": [
          {
            "code": "A1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://openingscanner.com/",
            "note_fr": "outil entièrement gratuit sans compte (MIT, 100 % navigateur) ; limite technique de 2 000 parties par scan, pas un quota d'usage"
          },
          {
            "code": "A2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/atamano/openingscanner",
            "note_fr": "« weak spots » par ouverture — gratuit sans compte"
          },
          {
            "code": "A4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/atamano/openingscanner",
            "note_fr": "export « study-ready repertoire PGN » — gratuit sans compte"
          },
          {
            "code": "B2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/atamano/openingscanner",
            "note_fr": "W/D/L par ouverture et « gaps » de couverture — gratuit sans compte"
          },
          {
            "code": "B4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/atamano/openingscanner",
            "note_fr": "explorateur de ses propres parties — gratuit sans compte"
          },
          {
            "code": "B6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C9",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://openingscanner.com/",
            "note_fr": "critère informationnel — « Free chess opening scanner », sans compte"
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://openingscanner.com/",
            "note_fr": "critère informationnel — 0 €"
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://openingscanner.com/",
            "note_fr": "critère informationnel"
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/atamano/openingscanner",
            "note_fr": "critère informationnel — MIT, aucun palier payant"
          },
          {
            "code": "E1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/atamano/openingscanner",
            "note_fr": "critère informationnel — classification lichess chess-openings"
          },
          {
            "code": "E3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/atamano/openingscanner",
            "note_fr": "critère informationnel — code MIT"
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/atamano/openingscanner",
            "note_fr": "critère informationnel"
          },
          {
            "code": "F1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://api.github.com/repos/atamano/openingscanner",
            "note_fr": "critère informationnel"
          },
          {
            "code": "G1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://openingscanner.com/",
            "note_fr": "critère informationnel — web seul"
          },
          {
            "code": "H2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://openingscanner.com/",
            "note_fr": "critère informationnel — 13 langues d'interface"
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/atamano/openingscanner",
            "note_fr": "critère informationnel — 100 % client, cache IndexedDB"
          },
          {
            "code": "I1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/atamano/openingscanner",
            "note_fr": "scan de tout pseudo Lichess/Chess.com — gratuit sans compte"
          },
          {
            "code": "I2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/atamano/openingscanner",
            "note_fr": "filtres en URL, navigation par ouverture/variante — gratuit sans compte"
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://openingscanner.com/",
            "note_fr": "critère informationnel — aucune ludification"
          },
          {
            "code": "K1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/atamano/openingscanner",
            "note_fr": "export PGN filtré et répertoire PGN — gratuit sans compte"
          },
          {
            "code": "K2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/atamano/openingscanner",
            "note_fr": "critère informationnel — « no backend », aucune donnée collectée"
          },
          {
            "code": "K3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://api.github.com/repos/atamano/openingscanner",
            "note_fr": "critère informationnel — MIT"
          }
        ]
      }
    },
    {
      "slug": "maia-chess",
      "name": "Maia Chess",
      "url": "https://www.maiachess.com/",
      "kind": "platform",
      "type": {
        "en": "human-like engine and web platform",
        "fr": "moteur humanisé et plateforme web"
      },
      "price": {
        "en": "€0 (free, GPL-3.0 research project)",
        "fr": "0 € (gratuit, projet de recherche GPL-3.0)"
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 2.99,
      "unweighted_score": 2.69,
      "category_scores": {
        "A": 1.7,
        "B": 2.2,
        "C": 0.4,
        "D": 10,
        "E": 5.8,
        "F": 0.7,
        "G": 1.7,
        "H": 1.3,
        "I": 0,
        "J": 2.5,
        "K": 3.3
      },
      "scores": {
        "A": [
          2,
          2,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          1,
          2,
          0,
          0,
          1,
          0
        ],
        "C": [
          0,
          1,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "D": [
          3,
          3,
          3,
          3
        ],
        "E": [
          2,
          0,
          3,
          2
        ],
        "F": [
          0,
          0,
          0,
          0,
          1
        ],
        "G": [
          0,
          2,
          0,
          0
        ],
        "H": [
          1,
          0,
          0,
          0,
          1
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          0,
          1,
          0,
          2
        ],
        "K": [
          0,
          0,
          3
        ]
      },
      "evidence_urls": {
        "A": [
          "https://www.maiachess.com/",
          "https://www.maiachess.com/",
          "https://www.maiachess.com/",
          "https://www.maiachess.com/",
          "https://www.maiachess.com/",
          "https://www.maiachess.com/",
          "https://www.maiachess.com/"
        ],
        "B": [
          "https://www.maiachess.com/drills",
          "https://www.maiachess.com/drills",
          "https://www.maiachess.com/",
          "https://www.maiachess.com/",
          "https://www.maiachess.com/drills"
        ],
        "C": [
          "https://www.maiachess.com/",
          "https://www.maiachess.com/puzzles",
          "https://www.maiachess.com/",
          "https://www.maiachess.com/",
          "https://www.maiachess.com/",
          "https://www.maiachess.com/",
          "https://www.maiachess.com/puzzles",
          "https://www.maiachess.com/",
          "https://www.maiachess.com/"
        ],
        "D": [
          "https://www.maiachess.com/",
          "https://www.maiachess.com/",
          "https://www.maiachess.com/",
          "https://www.maiachess.com/"
        ],
        "E": [
          "https://www.maiachess.com/",
          "https://www.maiachess.com/puzzles",
          "https://github.com/CSSLab/maia-chess",
          "https://www.maiachess.com/"
        ],
        "F": [
          "https://www.maiachess.com/",
          "https://www.maiachess.com/",
          "https://www.maiachess.com/",
          "https://www.maiachess.com/",
          "https://github.com/CSSLab/maia-chess"
        ],
        "G": [
          "https://www.maiachess.com/",
          "https://github.com/CSSLab/maia-chess",
          "https://www.maiachess.com/",
          "https://www.maiachess.com/"
        ],
        "H": [
          "https://www.maiachess.com/",
          "https://www.maiachess.com/",
          "https://www.maiachess.com/",
          "https://www.maiachess.com/",
          "https://www.maiachess.com/"
        ],
        "I": [
          "https://www.maiachess.com/",
          "https://www.maiachess.com/",
          "https://www.maiachess.com/",
          "https://www.maiachess.com/"
        ],
        "J": [
          "https://www.maiachess.com/",
          "https://www.maiachess.com/",
          "https://www.maiachess.com/"
        ],
        "K": [
          "https://www.maiachess.com/",
          "https://www.maiachess.com/privacy",
          "https://github.com/CSSLab/maia-chess"
        ]
      },
      "sources": [
        "https://www.maiachess.com/",
        "https://www.maiachess.com/blog",
        "https://www.maiachess.com/blog/platform-v1",
        "https://github.com/CSSLab/maia-chess",
        "https://github.com/CSSLab/maia2",
        "https://github.com/csslab/maia-platform-frontend",
        "https://www.maiachess.com/drills",
        "https://www.maiachess.com/puzzles",
        "https://www.maiachess.com/privacy"
      ],
      "review_url": "https://www.chesspivot.com/en/reviews/maia-chess",
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 2.99,
        "criteria": [
          {
            "code": "A1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.maiachess.com/",
            "note_fr": "entièrement gratuit ; connexion Lichess (compte gratuit)"
          },
          {
            "code": "A2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.maiachess.com/",
            "note_fr": "aucun prix ni quota sur tout le site"
          },
          {
            "code": "A3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.maiachess.com/",
            "note_fr": "drills d’ouvertures accessibles sans paiement"
          },
          {
            "code": "B2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.maiachess.com/",
            "note_fr": null
          },
          {
            "code": "B3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.maiachess.com/",
            "note_fr": null
          },
          {
            "code": "B6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.maiachess.com/",
            "note_fr": "puzzles sans paywall"
          },
          {
            "code": "C3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C9",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.maiachess.com/",
            "note_fr": "informationnel : offre 100 % gratuite"
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.maiachess.com/",
            "note_fr": "informationnel"
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.maiachess.com/",
            "note_fr": "informationnel"
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.maiachess.com/",
            "note_fr": "informationnel"
          },
          {
            "code": "E1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.maiachess.com/",
            "note_fr": "articles de recherche publics"
          },
          {
            "code": "E2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/CSSLab/maia-chess",
            "note_fr": "code et modèles publics GPL-3.0"
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.maiachess.com/",
            "note_fr": "informationnel"
          },
          {
            "code": "F1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/CSSLab/maia-chess",
            "note_fr": "informationnel"
          },
          {
            "code": "G1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.maiachess.com/",
            "note_fr": "bots Maia jouables gratuitement (site + Lichess)"
          },
          {
            "code": "G3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.maiachess.com/",
            "note_fr": "informationnel"
          },
          {
            "code": "H2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.maiachess.com/",
            "note_fr": "informationnel"
          },
          {
            "code": "I1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://discord.com/invite/Az93GqEAs7",
            "note_fr": "Discord gratuit"
          },
          {
            "code": "J3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.maiachess.com/",
            "note_fr": "informationnel : aucune mécanique payante"
          },
          {
            "code": "K1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "K2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "K3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/CSSLab/maia-chess",
            "note_fr": "informationnel : GPL-3.0"
          }
        ]
      }
    },
    {
      "slug": "apprendre-les-echecs-24h-com",
      "name": "Apprendre-les-echecs-24h.com",
      "url": "https://www.apprendre-les-echecs-24h.com",
      "kind": "platform",
      "type": {
        "en": "French video training, blog, club",
        "fr": "Formation vidéo francophone, blog, club"
      },
      "price": {
        "en": "€132 (one-off payment, lifetime access: \"Bien débuter\" modules 1-9 at €72 + \"Vers la maîtrise\" modules 10-24 at €60; themed packs €24.90; club and coaching not priced)",
        "fr": "132 € (paiement unique, accès à vie : « Bien débuter » modules 1-9 à 72 € + « Vers la maîtrise » modules 10-24 à 60 € ; packs thématiques 24,90 € ; club et coaching non chiffrés)"
      },
      "languages": 2,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 2.98,
      "unweighted_score": 3.03,
      "category_scores": {
        "A": 1.7,
        "B": 3.3,
        "C": 1.9,
        "D": 4.2,
        "E": 2.5,
        "F": 8,
        "G": 0.8,
        "H": 2,
        "I": 0,
        "J": 6.7,
        "K": 2.2
      },
      "scores": {
        "A": [
          0,
          0,
          1,
          2,
          1,
          0,
          0,
          0
        ],
        "B": [
          1,
          1,
          0,
          1,
          0,
          3
        ],
        "C": [
          0,
          1,
          1,
          1,
          0,
          1,
          0,
          0,
          1
        ],
        "D": [
          2,
          1,
          1,
          1
        ],
        "E": [
          1,
          0,
          1,
          1
        ],
        "F": [
          2,
          2,
          3,
          2,
          3
        ],
        "G": [
          0,
          0,
          0,
          1
        ],
        "H": [
          1,
          0,
          1,
          0,
          1
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          3,
          2,
          0,
          3
        ],
        "K": [
          0,
          2,
          0
        ]
      },
      "evidence_urls": {
        "A": [
          "https://www.apprendre-les-echecs-24h.com/progresser-aux-echecs/",
          "https://www.apprendre-les-echecs-24h.com",
          "https://analysis-chess.com/",
          "https://analysis-chess.com/",
          "https://analysis-chess.com/",
          "https://www.apprendre-les-echecs-24h.com",
          "https://www.apprendre-les-echecs-24h.com",
          "https://www.apprendre-les-echecs-24h.com"
        ],
        "B": [
          "https://boutique.apprendre-les-echecs-24h.com/",
          "https://www.apprendre-les-echecs-24h.com/ouvertures-echecs/",
          "https://www.apprendre-les-echecs-24h.com",
          "https://www.apprendre-les-echecs-24h.com",
          "https://www.apprendre-les-echecs-24h.com",
          "https://www.apprendre-les-echecs-24h.com/ouvertures-echecs/"
        ],
        "C": [
          "https://www.apprendre-les-echecs-24h.com",
          "https://www.apprendre-les-echecs-24h.com/apprendre-a-jouer-aux-echecs/",
          "https://www.apprendre-les-echecs-24h.com/progresser-aux-echecs/",
          "https://www.apprendre-les-echecs-24h.com/progresser-aux-echecs/",
          "https://www.apprendre-les-echecs-24h.com/progresser-aux-echecs/",
          "https://www.apprendre-les-echecs-24h.com/progresser-aux-echecs/",
          "https://www.apprendre-les-echecs-24h.com",
          "https://www.apprendre-les-echecs-24h.com/",
          "https://www.apprendre-les-echecs-24h.com/progresser-aux-echecs/"
        ],
        "D": [
          "https://www.apprendre-les-echecs-24h.com/apprendre-a-jouer-aux-echecs/",
          "https://boutique.apprendre-les-echecs-24h.com/",
          "https://boutique.apprendre-les-echecs-24h.com/",
          "https://boutique.apprendre-les-echecs-24h.com/"
        ],
        "E": [
          "https://www.apprendre-les-echecs-24h.com",
          "https://www.apprendre-les-echecs-24h.com",
          "https://www.apprendre-les-echecs-24h.com/progresser-aux-echecs/",
          "https://www.apprendre-les-echecs-24h.com"
        ],
        "F": [
          "https://boutique.apprendre-les-echecs-24h.com/",
          "https://www.apprendre-les-echecs-24h.com",
          "https://boutique.apprendre-les-echecs-24h.com/",
          "https://boutique.apprendre-les-echecs-24h.com/",
          "https://www.apprendre-les-echecs-24h.com"
        ],
        "G": [
          "https://boutique.apprendre-les-echecs-24h.com/",
          "https://www.apprendre-les-echecs-24h.com",
          "https://www.apprendre-les-echecs-24h.com",
          "https://boutique.apprendre-les-echecs-24h.com/"
        ],
        "H": [
          "https://www.apprendre-les-echecs-24h.com",
          "https://www.apprendre-les-echecs-24h.com",
          "https://www.apprendre-les-echecs-24h.com",
          "https://www.apprendre-les-echecs-24h.com/mentions-legales/",
          "https://www.apprendre-les-echecs-24h.com/mentions-legales/"
        ],
        "I": [
          "https://www.apprendre-les-echecs-24h.com/progresser-aux-echecs/",
          "https://www.apprendre-les-echecs-24h.com/progresser-aux-echecs/",
          "https://www.apprendre-les-echecs-24h.com/",
          "https://www.apprendre-les-echecs-24h.com/"
        ],
        "J": [
          "https://boutique.apprendre-les-echecs-24h.com/",
          "https://www.apprendre-les-echecs-24h.com",
          "https://www.apprendre-les-echecs-24h.com",
          "https://www.apprendre-les-echecs-24h.com"
        ],
        "K": [
          "https://www.apprendre-les-echecs-24h.com/conditions-generales-dutilisation/",
          "https://www.apprendre-les-echecs-24h.com/mentions-legales/",
          "https://www.apprendre-les-echecs-24h.com"
        ]
      },
      "sources": [
        "https://www.apprendre-les-echecs-24h.com/progresser-aux-echecs/",
        "https://www.apprendre-les-echecs-24h.com",
        "https://analysis-chess.com/",
        "https://boutique.apprendre-les-echecs-24h.com/",
        "https://www.apprendre-les-echecs-24h.com/ouvertures-echecs/",
        "https://www.apprendre-les-echecs-24h.com/apprendre-a-jouer-aux-echecs/",
        "https://www.apprendre-les-echecs-24h.com/",
        "https://www.apprendre-les-echecs-24h.com/conditions-generales-dutilisation/",
        "https://www.apprendre-les-echecs-24h.com/mentions-legales/",
        "https://app-enfant.fr/application/apprendre-echecs-24h/",
        "https://www.apprendre-les-echecs-24h.com/progresser-aux-echecs/plan-entrainement-echecs/"
      ],
      "review_url": "https://www.chesspivot.com/en/reviews/apprendre-les-echecs-24h-com",
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 2.62,
        "criteria": [
          {
            "code": "A1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://analysis-chess.com",
            "note_fr": "outil partenaire analysis-chess.com : « Analyser mon profil gratuitement » ; site injoignable le 02/09 (DNS) ; preuve publique relevée le 30/08/2026, site confirmé actif"
          },
          {
            "code": "A4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://analysis-chess.com",
            "note_fr": "via le rapport gratuit analysis-chess.com"
          },
          {
            "code": "A5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://analysis-chess.com",
            "note_fr": "PDF gratuit (inscription gratuite requise)"
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B1",
            "status": "paid",
            "quota": null,
            "source_url": "https://boutique.apprendre-les-echecs-24h.com/",
            "note_fr": "packs d’ouvertures vidéo vendus 24,90 € l’unité"
          },
          {
            "code": "B2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.apprendre-les-echecs-24h.com/ouvertures-echecs/",
            "note_fr": "articles et vidéos d’ouvertures en libre accès"
          },
          {
            "code": "B3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.apprendre-les-echecs-24h.com",
            "note_fr": "informationnel : auteurs titrés, visible publiquement"
          },
          {
            "code": "B5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B6",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.apprendre-les-echecs-24h.com/ouvertures-echecs/",
            "note_fr": "articles gratuits (plans, principes, pièges)"
          },
          {
            "code": "C1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.apprendre-les-echecs-24h.com/apprendre-a-jouer-aux-echecs/",
            "note_fr": "« 50 exercices gratuits » + exercice du jour ; banque entière gratuite (inscription gratuite)"
          },
          {
            "code": "C3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.apprendre-les-echecs-24h.com/progresser-aux-echecs/",
            "note_fr": "articles finales en libre accès"
          },
          {
            "code": "C4",
            "status": "paid",
            "quota": null,
            "source_url": "https://boutique.apprendre-les-echecs-24h.com/",
            "note_fr": "formation vidéo « jeu positionnel » = pack payant 24,90 € (espace membre)"
          },
          {
            "code": "C5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C6",
            "status": "paid",
            "quota": null,
            "source_url": "https://boutique.apprendre-les-echecs-24h.com/",
            "note_fr": "« radar tactique » = pack payant 24,90 € (espace membre)"
          },
          {
            "code": "C7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C9",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.apprendre-les-echecs-24h.com/apprendre-a-jouer-aux-echecs/notre-programme-dentrainement/",
            "note_fr": "programme générique gratuit : « C’est gratuit, il suffit de s’inscrire »"
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.apprendre-les-echecs-24h.com/apprendre-a-jouer-aux-echecs/",
            "note_fr": "informationnel"
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://boutique.apprendre-les-echecs-24h.com/",
            "note_fr": "informationnel : 72 € + 60 € affichés"
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://boutique.apprendre-les-echecs-24h.com/",
            "note_fr": "informationnel"
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://boutique.apprendre-les-echecs-24h.com/",
            "note_fr": "informationnel"
          },
          {
            "code": "E1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.apprendre-les-echecs-24h.com",
            "note_fr": "informationnel"
          },
          {
            "code": "E2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.apprendre-les-echecs-24h.com/progresser-aux-echecs/",
            "note_fr": "informationnel"
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.apprendre-les-echecs-24h.com",
            "note_fr": "informationnel"
          },
          {
            "code": "F1",
            "status": "quota-real",
            "quota": "« Les 3 premiers modules » offerts — « Aucun engagement »",
            "source_url": "https://boutique.apprendre-les-echecs-24h.com/",
            "note_fr": "3 modules gratuits permanents sur 24 ; la suite (72 € + 60 €) est payante"
          },
          {
            "code": "F2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.apprendre-les-echecs-24h.com",
            "note_fr": "informationnel"
          },
          {
            "code": "F3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://boutique.apprendre-les-echecs-24h.com/",
            "note_fr": "informationnel : le programme gratuit alterne aussi vidéos, exercices et articles"
          },
          {
            "code": "F4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://boutique.apprendre-les-echecs-24h.com/",
            "note_fr": "informationnel : curriculum 24 modules publié"
          },
          {
            "code": "F5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.apprendre-les-echecs-24h.com",
            "note_fr": "informationnel : blog daté en libre accès"
          },
          {
            "code": "G1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G4",
            "status": "paid",
            "quota": null,
            "source_url": "https://boutique.apprendre-les-echecs-24h.com/",
            "note_fr": "« Tournois en ligne hebdomadaires » réservés au club payant (prix non affiché)"
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.apprendre-les-echecs-24h.com",
            "note_fr": "informationnel"
          },
          {
            "code": "H2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.apprendre-les-echecs-24h.com",
            "note_fr": "informationnel"
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.apprendre-les-echecs-24h.com/mentions-legales/",
            "note_fr": "informationnel"
          },
          {
            "code": "I1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J1",
            "status": "paid",
            "quota": null,
            "source_url": "https://boutique.apprendre-les-echecs-24h.com/",
            "note_fr": "« Coaching privé » payant (prix non affiché)"
          },
          {
            "code": "J2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.apprendre-les-echecs-24h.com",
            "note_fr": "informationnel : communauté/newsletter gratuite ; le club (tournois) est payant"
          },
          {
            "code": "J3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.apprendre-les-echecs-24h.com",
            "note_fr": "informationnel"
          },
          {
            "code": "K1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "K2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.apprendre-les-echecs-24h.com/mentions-legales/",
            "note_fr": "informationnel"
          },
          {
            "code": "K3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          }
        ]
      }
    },
    {
      "slug": "chessvia",
      "name": "Chessvia",
      "url": "https://chessvia.ai/",
      "kind": "platform",
      "type": {
        "en": "Conversational AI coach backed by the engine",
        "fr": "Coach IA conversationnel adossé au moteur"
      },
      "price": {
        "en": "Platinum $149/yr ≈ €137 (Silver $49/yr, Gold $99/yr) per the official post of 2026-07-16; price on the pricing page: not available.",
        "fr": "Platinum 149 $/an ≈ 137 € (Silver 49 $/an, Gold 99 $/an) d’après le billet officiel du 16/07/2026 ; prix sur la page tarifs : non disponible."
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 2.94,
      "unweighted_score": 2.91,
      "category_scores": {
        "A": 4.2,
        "B": 0.6,
        "C": 1.5,
        "D": 4.2,
        "E": 6.7,
        "F": 3.3,
        "G": 3.3,
        "H": 1.3,
        "I": 0,
        "J": 2.5,
        "K": 4.4
      },
      "scores": {
        "A": [
          3,
          2,
          1,
          1,
          2,
          1,
          0,
          0
        ],
        "B": [
          1,
          0,
          0,
          0,
          0,
          0
        ],
        "C": [
          1,
          0,
          0,
          0,
          1,
          0,
          1,
          0,
          1
        ],
        "D": [
          1,
          1,
          2,
          1
        ],
        "E": [
          1,
          2,
          2,
          3
        ],
        "F": [
          0,
          0,
          1,
          1,
          3
        ],
        "G": [
          0,
          2,
          2,
          0
        ],
        "H": [
          1,
          0,
          0,
          0,
          1
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          0,
          1,
          0,
          2
        ],
        "K": [
          2,
          1,
          1
        ]
      },
      "evidence_urls": {
        "A": [
          "https://chessvia.ai/",
          "https://chessvia.ai/blog/why-was-that-a-blunder",
          "https://chessvia.ai/faq",
          "https://chessvia.ai/blog/why-was-that-a-blunder",
          "https://chessvia.ai/faq",
          "https://chessvia.ai/blog/chessvia-ai-chess-helper",
          "https://chessvia.ai/",
          "https://chessvia.ai/blog/why-was-that-a-blunder"
        ],
        "B": [
          "https://chessvia.ai/",
          "https://chessvia.ai/",
          "https://chessvia.ai/",
          "https://chessvia.ai/",
          "https://chessvia.ai/",
          "https://chessvia.ai/"
        ],
        "C": [
          "https://chessvia.ai/",
          "https://chessvia.ai/",
          "https://chessvia.ai/",
          "https://chessvia.ai/",
          "https://chessvia.ai/faq",
          "https://chessvia.ai/",
          "https://chessvia.ai/blog/chessvia-ai-chess-helper",
          "https://chessvia.ai/faq",
          "https://chessvia.ai/"
        ],
        "D": [
          "https://chessvia.ai/blog/does-an-ai-chess-coach-work",
          "https://chessvia.ai/blog/best-ai-chess-coach",
          "https://chessvia.ai/blog/does-an-ai-chess-coach-work",
          "https://chessvia.ai/faq"
        ],
        "E": [
          "https://chessvia.ai/blog/does-an-ai-chess-coach-work",
          "https://chessvia.ai/blog/chessvia-ai-chess-helper",
          "https://chessvia.ai/blog/chessvia-ai-chess-helper",
          "https://chessvia.ai/blog/does-an-ai-chess-coach-work"
        ],
        "F": [
          "https://chessvia.ai/blog",
          "https://chessvia.ai/blog",
          "https://chessvia.ai/blog",
          "https://chessvia.ai/blog/how-to-stop-blundering-in-chess",
          "https://chessvia.ai/blog"
        ],
        "G": [
          "https://chessvia.ai/",
          "https://chessvia.ai/blog/chessvia-ai-chess-helper",
          "https://chessvia.ai/blog/chessvia-ai-chess-helper",
          "https://chessvia.ai/"
        ],
        "H": [
          "https://chessvia.ai/",
          "https://chessvia.ai/",
          "https://chessvia.ai/",
          "https://chessvia.ai/",
          "https://chessvia.ai/"
        ],
        "I": [
          "https://chessvia.ai/faq",
          "https://chessvia.ai/",
          "https://chessvia.ai/",
          "https://chessvia.ai/faq"
        ],
        "J": [
          "https://chessvia.ai/",
          "https://chessvia.ai/blog/why-was-that-a-blunder",
          "https://chessvia.ai/",
          "https://chessvia.ai/terms-of-service"
        ],
        "K": [
          "https://chessvia.ai/privacy-policy",
          "https://chessvia.ai/privacy-policy",
          "https://chessvia.ai/"
        ]
      },
      "sources": [
        "https://chessvia.ai/",
        "https://chessvia.ai/faq",
        "https://chessvia.ai/terms-of-service",
        "https://chessvia.ai/privacy-policy",
        "https://chessvia.ai/blog",
        "https://chessvia.ai/blog/best-ai-chess-coach",
        "https://chessvia.ai/blog/does-an-ai-chess-coach-work",
        "https://chessvia.ai/blog/best-chess-analysis-site",
        "https://chessvia.ai/blog/why-was-that-a-blunder",
        "https://chessvia.ai/blog/chessvia-ai-chess-helper",
        "https://chessvia.ai/blog/how-to-stop-blundering-in-chess"
      ],
      "review_url": "https://www.chesspivot.com/en/reviews/chessvia",
      "free_access": null
    },
    {
      "slug": "sensei-chess",
      "name": "Sensei Chess",
      "url": "https://senseichess.com",
      "kind": "platform",
      "type": {
        "en": "AI coach on Chess.com/Lichess games",
        "fr": "Coach IA sur parties Chess.com/Lichess"
      },
      "price": {
        "en": "€45/yr (12 × €3.75/mo for the Pro plan shown on /subscribe/products; \"Save 17%\" annually ≈ €37; Plus plan €1.50/mo)",
        "fr": "45 €/an (12 × 3,75 €/mois du plan Pro affiché sur /subscribe/products ; « Save 17% » en annuel ≈ 37 € ; plan Plus 1,50 €/mois)"
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 2.93,
      "unweighted_score": 2.36,
      "category_scores": {
        "A": 4.6,
        "B": 1.1,
        "C": 3,
        "D": 5.8,
        "E": 2.5,
        "F": 1.3,
        "G": 0.8,
        "H": 1.3,
        "I": 1.7,
        "J": 1.7,
        "K": 2.2
      },
      "scores": {
        "A": [
          2,
          2,
          1,
          2,
          2,
          0,
          2,
          0
        ],
        "B": [
          0,
          0,
          1,
          0,
          1,
          0
        ],
        "C": [
          2,
          0,
          1,
          2,
          0,
          0,
          0,
          1,
          2
        ],
        "D": [
          1,
          2,
          2,
          2
        ],
        "E": [
          1,
          0,
          1,
          1
        ],
        "F": [
          0,
          0,
          1,
          1,
          0
        ],
        "G": [
          0,
          0,
          1,
          0
        ],
        "H": [
          1,
          0,
          0,
          0,
          1
        ],
        "I": [
          0,
          0,
          1,
          1
        ],
        "J": [
          0,
          1,
          0,
          1
        ],
        "K": [
          1,
          1,
          0
        ]
      },
      "evidence_urls": {
        "A": [
          "https://senseichess.com/faq",
          "https://senseichess.com/faq",
          "https://senseichess.com/features",
          "https://senseichess.com/faq",
          "https://senseichess.com/features",
          "https://senseichess.com/faq",
          "https://senseichess.com",
          "https://senseichess.com"
        ],
        "B": [
          "https://senseichess.com",
          "https://senseichess.com",
          "https://senseichess.com",
          "https://senseichess.com",
          "https://senseichess.com",
          "https://senseichess.com"
        ],
        "C": [
          "https://senseichess.com",
          "https://senseichess.com",
          "https://senseichess.com",
          "https://senseichess.com",
          "https://senseichess.com",
          "https://senseichess.com",
          "https://senseichess.com/faq",
          "https://senseichess.com",
          "https://senseichess.com/features"
        ],
        "D": [
          "https://senseichess.com/subscribe/products",
          "https://senseichess.com/subscribe/products",
          "https://senseichess.com/subscribe/products",
          "https://senseichess.com/subscribe/products"
        ],
        "E": [
          "https://senseichess.com",
          "https://senseichess.com/faq",
          "https://senseichess.com/faq",
          "https://senseichess.com"
        ],
        "F": [
          "https://senseichess.com",
          "https://senseichess.com",
          "https://senseichess.com/subscribe/products",
          "https://senseichess.com",
          "https://senseichess.com/privacy"
        ],
        "G": [
          "https://senseichess.com",
          "https://senseichess.com",
          "https://senseichess.com",
          "https://senseichess.com"
        ],
        "H": [
          "https://senseichess.com/faq",
          "https://senseichess.com",
          "https://senseichess.com",
          "https://senseichess.com/faq",
          "https://senseichess.com"
        ],
        "I": [
          "https://senseichess.com",
          "https://senseichess.com/features",
          "https://senseichess.com/features",
          "https://senseichess.com/faq"
        ],
        "J": [
          "https://senseichess.com",
          "https://senseichess.com",
          "https://senseichess.com/faq",
          "https://senseichess.com/subscribe/products"
        ],
        "K": [
          "https://senseichess.com/privacy",
          "https://senseichess.com/privacy",
          "https://senseichess.com/faq"
        ]
      },
      "sources": [
        "https://senseichess.com/terms",
        "https://senseichess.com/about",
        "https://senseichess.com/privacy",
        "https://senseichess.com/faq",
        "https://senseichess.com/features",
        "https://senseichess.com/subscribe/products",
        "https://senseichess.com"
      ],
      "review_url": "https://www.chesspivot.com/en/reviews/sensei-chess",
      "free_access": null
    },
    {
      "slug": "chess-assistant-26-aquarium-2026-chessok",
      "name": "Chess Assistant 26 / Aquarium 2026 (ChessOK)",
      "url": "https://chessok.com/?page_id=27966",
      "kind": "platform",
      "type": {
        "en": "Desktop database and analysis software",
        "fr": "Logiciel desktop de bases et d’analyse"
      },
      "price": {
        "en": "Perpetual licence (no subscription): Chess Assistant 26 Premium $199.50 ≈ €183 (promo $139.65 ≈ €128); CA 26 standard $109 ≈ €100; Aquarium 2026 $69.95 ≈ €64. Rule: list price of the full offer (Premium) as the annual equivalent.",
        "fr": "Licence perpétuelle (pas d’abonnement) : Chess Assistant 26 Premium 199,50 $ ≈ 183 € (promo 139,65 $ ≈ 128 €) ; CA 26 standard 109 $ ≈ 100 € ; Aquarium 2026 69,95 $ ≈ 64 €. Règle : prix catalogue de l’offre complète (Premium) comme équivalent annuel."
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 2.91,
      "unweighted_score": 3.12,
      "category_scores": {
        "A": 1.7,
        "B": 4.4,
        "C": 1.9,
        "D": 1.7,
        "E": 3.3,
        "F": 6,
        "G": 4.2,
        "H": 2,
        "I": 3.3,
        "J": 2.5,
        "K": 3.3
      },
      "scores": {
        "A": [
          1,
          3,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          2,
          1,
          0,
          2,
          2,
          1
        ],
        "C": [
          0,
          2,
          1,
          1,
          0,
          0,
          1,
          0,
          0
        ],
        "D": [
          0,
          0,
          1,
          1
        ],
        "E": [
          0,
          0,
          2,
          2
        ],
        "F": [
          2,
          2,
          2,
          1,
          2
        ],
        "G": [
          1,
          1,
          2,
          1
        ],
        "H": [
          0,
          0,
          0,
          0,
          3
        ],
        "I": [
          1,
          1,
          1,
          1
        ],
        "J": [
          0,
          0,
          0,
          3
        ],
        "K": [
          2,
          0,
          1
        ]
      },
      "evidence_urls": {
        "A": [
          "https://chessok.com/?page_id=27947",
          "https://chessok.com/?page_id=27948",
          "https://chessok.com/?page_id=27947",
          "https://chessok.com/?page_id=27947",
          "https://chessok.com/?page_id=27948",
          "https://chessok.com/?page_id=27948",
          "https://chessok.com/?page_id=27947",
          "https://chessok.com/?page_id=27947"
        ],
        "B": [
          "https://chessok.com/?page_id=27948",
          "https://chessok.com/?page_id=27948",
          "https://chessok.com/?page_id=27947",
          "https://chessok.com/?page_id=27947",
          "https://chessok.com/?page_id=27947",
          "https://chessok.com/?page_id=27947"
        ],
        "C": [
          "https://chessok.com/?page_id=27947",
          "https://chessok.com/?page_id=27947",
          "https://chessok.com/?page_id=27947",
          "https://chessok.com/?page_id=27966",
          "https://chessok.com/?page_id=27947",
          "https://chessok.com/?page_id=27947",
          "https://chessok.com/?page_id=27966",
          "https://chessok.com/?page_id=27947",
          "https://chessok.com/?page_id=27947"
        ],
        "D": [
          "https://chessok.com/?page_id=27966",
          "https://chessok.com/?page_id=27947",
          "https://chessok.com/?page_id=27966",
          "https://chessok.com/?page_id=27966"
        ],
        "E": [
          "https://chessok.com/?page_id=27966",
          "https://chessok.com/?page_id=27947",
          "https://chessok.com/?page_id=27948",
          "https://chessok.com/?page_id=27947"
        ],
        "F": [
          "https://chessok.com/?page_id=27966",
          "https://chessok.com/?page_id=27966",
          "https://chessok.com/?page_id=27947",
          "https://chessok.com/?page_id=27966",
          "https://chessok.com/?page_id=27947"
        ],
        "G": [
          "https://chessok.com/?page_id=27947",
          "https://chessok.com/?page_id=27948",
          "https://chessok.com/?page_id=27948",
          "https://chessok.com/?page_id=27947"
        ],
        "H": [
          "https://chessok.com/?page_id=27948",
          "https://chessok.com/?page_id=27966",
          "https://chessok.com/?page_id=27947",
          "https://chessok.com/?page_id=27947",
          "https://chessok.com/?page_id=27948"
        ],
        "I": [
          "https://chessok.com/?page_id=27947",
          "https://chessok.com/?page_id=27948",
          "https://chessok.com/?page_id=27947",
          "https://chessok.com/?page_id=27947"
        ],
        "J": [
          "https://chessok.com/?page_id=27966",
          "https://chessok.com/?page_id=27966",
          "https://chessok.com/?page_id=27947",
          "https://chessok.com/?page_id=27948"
        ],
        "K": [
          "https://chessok.com/?page_id=27947",
          "https://chessok.com/?page_id=2",
          "https://chessok.com/?page_id=27947"
        ]
      },
      "sources": [
        "https://chessok.com/?page_id=27947",
        "https://chessok.com/?page_id=27948",
        "https://chessok.com/?page_id=27966",
        "https://chessok.com/?page_id=2",
        "https://chessok.com/",
        "https://www.chessprogramming.org/ChessOK",
        "https://en.wikipedia.org/wiki/Chess_Assistant",
        "https://chesskingtraining.com/products/chess-assistant/chessok-aquarium-2026/"
      ],
      "review_url": "https://www.chesspivot.com/en/reviews/chess-assistant-26-aquarium-2026-chessok",
      "free_access": null
    },
    {
      "slug": "analysis-chess-com",
      "name": "Analysis-chess.com",
      "url": "https://analysis-chess.com",
      "kind": "platform",
      "type": {
        "en": "free statistical report from a GM",
        "fr": "rapport statistique gratuit d’un GMI"
      },
      "price": {
        "en": "€0 (free analysis and PDF report, rule: free); video packs €49.90 each, price visible only on analysis-chess.com/referral-program.html",
        "fr": "0 € (analyse et rapport PDF gratuits, règle : gratuit) ; packs vidéo 49,90 € l’unité, prix visible seulement sur analysis-chess.com/referral-program.html"
      },
      "languages": 2,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 2.89,
      "unweighted_score": 2.25,
      "category_scores": {
        "A": 4.2,
        "B": 0.6,
        "C": 0.7,
        "D": 8.3,
        "E": 2.5,
        "F": 4,
        "G": 0,
        "H": 2,
        "I": 1.7,
        "J": 0.8,
        "K": 0
      },
      "scores": {
        "A": [
          2,
          2,
          1,
          2,
          1,
          0,
          0,
          2
        ],
        "B": [
          0,
          0,
          0,
          0,
          1,
          0
        ],
        "C": [
          0,
          1,
          0,
          0,
          0,
          0,
          0,
          0,
          1
        ],
        "D": [
          3,
          3,
          1,
          3
        ],
        "E": [
          0,
          0,
          1,
          2
        ],
        "F": [
          2,
          2,
          2,
          0,
          0
        ],
        "G": [
          0,
          0,
          0,
          0
        ],
        "H": [
          1,
          0,
          1,
          0,
          1
        ],
        "I": [
          2,
          0,
          0,
          0
        ],
        "J": [
          0,
          0,
          0,
          1
        ],
        "K": [
          0,
          0,
          0
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 2.79,
        "criteria": [
          {
            "code": "A1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://analysis-chess.com",
            "note_fr": "pseudos Lichess/Chess.com, service gratuit ; site injoignable le 02/09 (DNS) ; preuve publique relevée le 30/08/2026, site confirmé actif"
          },
          {
            "code": "A2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://analysis-chess.com",
            "note_fr": "analyse gratuite jusqu’à 500 parties par rapport ; aucun quota de rapports publié"
          },
          {
            "code": "A3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://analysis-chess.com",
            "note_fr": "dans le rapport PDF gratuit"
          },
          {
            "code": "A4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://analysis-chess.com",
            "note_fr": "dans le rapport PDF gratuit"
          },
          {
            "code": "A5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://analysis-chess.com",
            "note_fr": "PDF gratuit (inscription gratuite)"
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A8",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://analysis-chess.com",
            "note_fr": "dans le rapport PDF gratuit"
          },
          {
            "code": "B1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://analysis-chess.com",
            "note_fr": "ouvertures les plus jouées, rapport gratuit"
          },
          {
            "code": "B6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://analysis-chess.com",
            "note_fr": "20 exercices inclus dans le PDF gratuit"
          },
          {
            "code": "C3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C9",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://analysis-chess.com",
            "note_fr": "recommandations de formations incluses dans le PDF gratuit"
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://analysis-chess.com",
            "note_fr": "informationnel : « Analyser mon profil gratuitement »"
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://analysis-chess.com",
            "note_fr": "informationnel : 0 €"
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://analysis-chess.com/referral-program.html",
            "note_fr": "informationnel"
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://analysis-chess.com",
            "note_fr": "informationnel"
          },
          {
            "code": "E1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://analysis-chess.com",
            "note_fr": "informationnel"
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://analysis-chess.com",
            "note_fr": "informationnel"
          },
          {
            "code": "F1",
            "status": "paid",
            "quota": null,
            "source_url": "https://analysis-chess.com/referral-program.html",
            "note_fr": "packs vidéo par niveau vendus 49,90 € l’unité"
          },
          {
            "code": "F2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://analysis-chess.com",
            "note_fr": "informationnel : « Anthony Wirig, GMI » affiché publiquement"
          },
          {
            "code": "F3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://analysis-chess.com",
            "note_fr": "informationnel : formats de l’offre (vidéos vendues à part 49,90 € ; rapport PDF gratuit)"
          },
          {
            "code": "F4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://analysis-chess.com",
            "note_fr": "informationnel"
          },
          {
            "code": "H2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://analysis-chess.com",
            "note_fr": "informationnel"
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://analysis-chess.com",
            "note_fr": "informationnel"
          },
          {
            "code": "I1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://analysis-chess.com",
            "note_fr": "tout pseudo Lichess/Chess.com analysable gratuitement"
          },
          {
            "code": "I2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://analysis-chess.com/referral-program.html",
            "note_fr": "informationnel"
          },
          {
            "code": "K1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "K2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "K3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          }
        ]
      }
    },
    {
      "slug": "chessline-io",
      "name": "Chessline.io",
      "url": "https://chessline.io/",
      "kind": "platform",
      "type": {
        "en": "AI-generated opening repertoire",
        "fr": "répertoire d’ouvertures généré par IA"
      },
      "price": {
        "en": "Premium CHF 4.99/mo, no annual price shown → 12 × 4.99 = CHF 59.88 ≈ €64 (CHF 1 ≈ €1.07). Rule: 12 × monthly.",
        "fr": "Premium 4,99 CHF/mois, aucun annuel affiché → 12 × 4,99 = 59,88 CHF ≈ 64 € (1 CHF ≈ 1,07 €). Règle : 12 × mensuel."
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 2.89,
      "unweighted_score": 2.58,
      "category_scores": {
        "A": 0.4,
        "B": 5,
        "C": 0.4,
        "D": 7.5,
        "E": 4.2,
        "F": 2.7,
        "G": 0,
        "H": 2.7,
        "I": 0.8,
        "J": 2.5,
        "K": 2.2
      },
      "scores": {
        "A": [
          0,
          1,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          3,
          2,
          0,
          2,
          0,
          2
        ],
        "C": [
          0,
          0,
          0,
          0,
          0,
          0,
          1,
          0,
          0
        ],
        "D": [
          2,
          2,
          2,
          3
        ],
        "E": [
          0,
          2,
          1,
          2
        ],
        "F": [
          0,
          1,
          1,
          1,
          1
        ],
        "G": [
          0,
          0,
          0,
          0
        ],
        "H": [
          3,
          0,
          0,
          0,
          1
        ],
        "I": [
          1,
          0,
          0,
          0
        ],
        "J": [
          0,
          0,
          1,
          2
        ],
        "K": [
          1,
          1,
          0
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 2.01,
        "criteria": [
          {
            "code": "A1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A2",
            "status": "undocumented",
            "quota": null,
            "source_url": null,
            "note_fr": "ni chessline.io/pricing ni /support n’établissent l’accès à l’analyse moteur en plan Free"
          },
          {
            "code": "A3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B1",
            "status": "paid",
            "quota": null,
            "source_url": "https://chessline.io/pricing",
            "note_fr": "« 3 tokens to create openings per month » listé uniquement sous Premium (4,99 CHF/mois) ; plan Free = découverte"
          },
          {
            "code": "B2",
            "status": "paid",
            "quota": null,
            "source_url": "https://chessline.io/pricing",
            "note_fr": "« Unlimited training — Train all your lines with our move-trainer » listé sous Premium"
          },
          {
            "code": "B3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessline.io/",
            "note_fr": "informationnel : « engine analysis based on millions of real chess games » (attribut du contenu)"
          },
          {
            "code": "B5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B6",
            "status": "undocumented",
            "quota": null,
            "source_url": null,
            "note_fr": "explications liées aux ouvertures générées (Premium) ; inclusion en plan Free non établie"
          },
          {
            "code": "C1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C7",
            "status": "paid",
            "quota": null,
            "source_url": "https://chessline.io/pricing",
            "note_fr": "lignes adaptées au niveau = « Unlimited Lines — All the lines that your opponents play at your level », Premium"
          },
          {
            "code": "C8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C9",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessline.io/pricing",
            "note_fr": "informationnel"
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessline.io/pricing",
            "note_fr": "informationnel : 4,99 CHF/mois"
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessline.io/terms",
            "note_fr": "informationnel : essai 3 jours, annulation en ligne"
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessline.io/pricing",
            "note_fr": "informationnel"
          },
          {
            "code": "E1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessline.io/",
            "note_fr": "informationnel"
          },
          {
            "code": "E3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessline.io/",
            "note_fr": "informationnel"
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessline.io/",
            "note_fr": "informationnel"
          },
          {
            "code": "F1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessline.io/",
            "note_fr": "informationnel"
          },
          {
            "code": "F3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessline.io/",
            "note_fr": "informationnel : un seul format (entraînement interactif, cœur en Premium)"
          },
          {
            "code": "F4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessline.io/support",
            "note_fr": "informationnel : conseils publics par tranche ELO"
          },
          {
            "code": "F5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/chessline/id6748459144",
            "note_fr": "informationnel"
          },
          {
            "code": "G1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessline.io/",
            "note_fr": "informationnel : web + App Store + Google Play"
          },
          {
            "code": "H2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessline.io/",
            "note_fr": "informationnel"
          },
          {
            "code": "I1",
            "status": "paid",
            "quota": null,
            "source_url": "https://chessline.io/pricing",
            "note_fr": "préparation d’adversaires = « Unlimited Lines — All the lines that your opponents play at your level », Premium"
          },
          {
            "code": "I2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J3",
            "status": "paid",
            "quota": null,
            "source_url": "https://chessline.io/pricing",
            "note_fr": "« custom pricing for chess schools and academies » : offre écoles payante sur devis"
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessline.io/pricing",
            "note_fr": "informationnel"
          },
          {
            "code": "K1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessline.io/privacy",
            "note_fr": "informationnel : droit à la portabilité sur demande"
          },
          {
            "code": "K2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessline.io/privacy",
            "note_fr": "informationnel"
          },
          {
            "code": "K3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          }
        ]
      }
    },
    {
      "slug": "chess-position-trainer-5",
      "name": "Chess Position Trainer 5",
      "url": "https://chesspositiontrainer.com",
      "kind": "platform",
      "type": {
        "en": "Windows opening repertoire software",
        "fr": "Logiciel Windows de répertoire d’ouvertures"
      },
      "price": {
        "en": "$39.90 ≈ €37 (one-off Pro licence, /buy page; standard version free; $1 ≈ €0.92)",
        "fr": "39,90 $ ≈ 37 € (licence Pro unique, page /buy ; version standard gratuite ; 1 $ ≈ 0,92 €)"
      },
      "languages": 2,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 2.88,
      "unweighted_score": 2.66,
      "category_scores": {
        "A": 0.8,
        "B": 4.4,
        "C": 2.2,
        "D": 7.5,
        "E": 1.7,
        "F": 0,
        "G": 1.7,
        "H": 2.7,
        "I": 1.7,
        "J": 3.3,
        "K": 3.3
      },
      "scores": {
        "A": [
          1,
          1,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          2,
          3,
          2,
          0,
          1,
          0
        ],
        "C": [
          1,
          0,
          1,
          0,
          0,
          0,
          0,
          2,
          2
        ],
        "D": [
          2,
          2,
          2,
          3
        ],
        "E": [
          0,
          0,
          1,
          1
        ],
        "F": [
          0,
          0,
          0,
          0,
          0
        ],
        "G": [
          0,
          1,
          1,
          0
        ],
        "H": [
          0,
          0,
          1,
          0,
          3
        ],
        "I": [
          0,
          1,
          1,
          0
        ],
        "J": [
          0,
          1,
          0,
          3
        ],
        "K": [
          2,
          0,
          1
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 2.14,
        "criteria": [
          {
            "code": "A1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesspositiontrainer.com/index.php/en/download",
            "note_fr": "édition Standard gratuite : « Import/export capability » (PGN)"
          },
          {
            "code": "A2",
            "status": "paid",
            "quota": null,
            "source_url": "https://chesspositiontrainer.com/index.php/en/download",
            "note_fr": "« UCI engine support » listé côté Pro (39,90 $)"
          },
          {
            "code": "A3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesspositiontrainer.com/index.php/en/download",
            "note_fr": "création/gestion de répertoire dans la Standard gratuite ; topics, sous-variantes et multi-répertoires = Pro"
          },
          {
            "code": "B2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesspositiontrainer.com/index.php/en/download",
            "note_fr": "entraînement de base (« Training tabiyas », « Live statistics ») gratuit ; flash-card, modes de sélection et parties contre le répertoire = Pro"
          },
          {
            "code": "B3",
            "status": "paid",
            "quota": null,
            "source_url": "https://chesspositiontrainer.com/index.php/en/download",
            "note_fr": "« Learn from every game you play » repose sur « Run games against Repertoire », listé côté Pro"
          },
          {
            "code": "B4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesspositiontrainer.com/index.php/en/download",
            "note_fr": "« Basic statistics » dans la Standard"
          },
          {
            "code": "B6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C1",
            "status": "paid",
            "quota": null,
            "source_url": "https://chesspositiontrainer.com/index.php/en/download",
            "note_fr": "via « Run games against Repertoire » (Pro)"
          },
          {
            "code": "C2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C3",
            "status": "paid",
            "quota": null,
            "source_url": "https://chesspositiontrainer.com/index.php/en/download",
            "note_fr": "« Topics for endgame/middlegame/key positions » listé côté Pro"
          },
          {
            "code": "C4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C8",
            "status": "paid",
            "quota": null,
            "source_url": "https://chesspositiontrainer.com/index.php/en/download",
            "note_fr": "mode « scheduled » parmi les « multiple selection modes (scheduled, random, photo reading, systematic) », listé côté Pro"
          },
          {
            "code": "C9",
            "status": "paid",
            "quota": null,
            "source_url": "https://chesspositiontrainer.com/index.php/en/download",
            "note_fr": "file quotidienne « Scheduled only » = Pro"
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesspositiontrainer.com/index.php/en/download",
            "note_fr": "informationnel"
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesspositiontrainer.com/index.php/en/buy",
            "note_fr": "informationnel : Pro 39,90 $ une fois"
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesspositiontrainer.com/index.php/en/download",
            "note_fr": "informationnel : « All Pro-Features are unlocked for 30 days! »"
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesspositiontrainer.com/index.php/en/download",
            "note_fr": "informationnel"
          },
          {
            "code": "E1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesspositiontrainer.com/index.php/en/features",
            "note_fr": "informationnel"
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesspositiontrainer.com",
            "note_fr": "informationnel"
          },
          {
            "code": "F1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G2",
            "status": "paid",
            "quota": null,
            "source_url": "https://chesspositiontrainer.com/index.php/en/download",
            "note_fr": "« Run games against repertoire » listé côté Pro"
          },
          {
            "code": "G3",
            "status": "paid",
            "quota": null,
            "source_url": "https://chesspositiontrainer.com/index.php/en/download",
            "note_fr": "moteur UCI et position explorer = Pro"
          },
          {
            "code": "G4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesspositiontrainer.com/index.php/en/download",
            "note_fr": "« Multiple language support » listé côté Standard (EN, DE, FR, NL, IT, PT)"
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesspositiontrainer.com/index.php/en/download",
            "note_fr": "logiciel Windows local, fonctionne hors-ligne, édition Standard gratuite"
          },
          {
            "code": "I1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesspositiontrainer.com/index.php/en/download",
            "note_fr": "« Rich formatting for position comments » listé côté Standard"
          },
          {
            "code": "I3",
            "status": "paid",
            "quota": null,
            "source_url": "https://chesspositiontrainer.com/index.php/en/download",
            "note_fr": "« Smart one-click input » listé côté Pro"
          },
          {
            "code": "I4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesspositiontrainer.com",
            "note_fr": "informationnel"
          },
          {
            "code": "J3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesspositiontrainer.com",
            "note_fr": "informationnel"
          },
          {
            "code": "K1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesspositiontrainer.com/index.php/en/download",
            "note_fr": "import/export PGN dans la Standard"
          },
          {
            "code": "K2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "K3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesspositiontrainer.com/index.php/en/features",
            "note_fr": "informationnel : formats PGN/UCI, code fermé"
          }
        ]
      }
    },
    {
      "slug": "chessreps",
      "name": "Chessreps",
      "url": "https://chessreps.com/",
      "kind": "platform",
      "type": {
        "en": "spaced-repetition opening trainer",
        "fr": "entraîneur d’ouvertures par répétition espacée"
      },
      "price": {
        "en": "$34.99/yr ≈ €32.19 (annual price shown on chessreps.com/plans); monthly $4.99.",
        "fr": "34,99 $/an ≈ 32,19 € (annuel affiché sur chessreps.com/plans) ; mensuel 4,99 $."
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 2.88,
      "unweighted_score": 2.97,
      "category_scores": {
        "A": 0,
        "B": 3.9,
        "C": 2.2,
        "D": 6.7,
        "E": 2.5,
        "F": 3.3,
        "G": 0,
        "H": 4.7,
        "I": 2.5,
        "J": 2.5,
        "K": 4.4
      },
      "scores": {
        "A": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          2,
          2,
          0,
          2,
          0,
          1
        ],
        "C": [
          0,
          1,
          0,
          0,
          0,
          0,
          1,
          2,
          2
        ],
        "D": [
          0,
          2,
          3,
          3
        ],
        "E": [
          1,
          0,
          1,
          1
        ],
        "F": [
          1,
          0,
          1,
          0,
          3
        ],
        "G": [
          0,
          0,
          0,
          0
        ],
        "H": [
          3,
          3,
          0,
          0,
          1
        ],
        "I": [
          0,
          2,
          1,
          0
        ],
        "J": [
          0,
          1,
          0,
          2
        ],
        "K": [
          1,
          1,
          2
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": null
    },
    {
      "slug": "chess-tracker",
      "name": "Chess Tracker",
      "url": "https://chess-tracker.com/",
      "kind": "platform",
      "type": {
        "en": "Chess.com statistics dashboard",
        "fr": "Tableau de bord de statistiques Chess.com"
      },
      "price": {
        "en": "€0 (free, ad-funded; iOS app free)",
        "fr": "0 € (gratuit, financé par publicité ; app iOS gratuite)"
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 2.84,
      "unweighted_score": 2.38,
      "category_scores": {
        "A": 3.3,
        "B": 1.1,
        "C": 0.4,
        "D": 10,
        "E": 2.5,
        "F": 1.3,
        "G": 0,
        "H": 2,
        "I": 1.7,
        "J": 1.7,
        "K": 2.2
      },
      "scores": {
        "A": [
          2,
          0,
          1,
          2,
          0,
          0,
          2,
          1
        ],
        "B": [
          0,
          0,
          1,
          0,
          1,
          0
        ],
        "C": [
          0,
          1,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "D": [
          3,
          3,
          3,
          3
        ],
        "E": [
          0,
          0,
          1,
          2
        ],
        "F": [
          0,
          0,
          0,
          0,
          2
        ],
        "G": [
          0,
          0,
          0,
          0
        ],
        "H": [
          2,
          0,
          0,
          0,
          1
        ],
        "I": [
          1,
          0,
          0,
          1
        ],
        "J": [
          0,
          0,
          0,
          2
        ],
        "K": [
          0,
          2,
          0
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 2.84,
        "criteria": [
          {
            "code": "A1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chess-tracker.com/",
            "note_fr": "« Free and no registration needed. Just enter a player name. »"
          },
          {
            "code": "A2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chess-tracker.com/",
            "note_fr": null
          },
          {
            "code": "A4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chess-tracker.com/player/lightningflash66",
            "note_fr": "profil public gratuit"
          },
          {
            "code": "A5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A7",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chess-tracker.com/",
            "note_fr": null
          },
          {
            "code": "A8",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chess-tracker.com/",
            "note_fr": "outil /compare public"
          },
          {
            "code": "B1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chess-tracker.com/",
            "note_fr": null
          },
          {
            "code": "B4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chess-tracker.com/",
            "note_fr": null
          },
          {
            "code": "B6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/de/app/chess-tracker/id6780763458",
            "note_fr": "app iOS gratuite (« daily puzzles »)"
          },
          {
            "code": "C3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C9",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chess-tracker.com/",
            "note_fr": "informationnel : gratuit sans inscription"
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chess-tracker.com/",
            "note_fr": "informationnel : 0 €"
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chess-tracker.com/",
            "note_fr": "informationnel"
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chess-tracker.com/",
            "note_fr": "informationnel : financé par publicité"
          },
          {
            "code": "E1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chess-tracker.com/",
            "note_fr": "informationnel"
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chess-tracker.com/",
            "note_fr": "informationnel"
          },
          {
            "code": "F1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/de/app/chess-tracker/id6780763458",
            "note_fr": "informationnel"
          },
          {
            "code": "G1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chess-tracker.com/download",
            "note_fr": "informationnel"
          },
          {
            "code": "H2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chess-tracker.com/datenschutz",
            "note_fr": "informationnel"
          },
          {
            "code": "I1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chess-tracker.com/player/lightningflash66",
            "note_fr": "tout pseudo Chess.com consultable gratuitement"
          },
          {
            "code": "I2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chess-tracker.com/player/lightningflash66",
            "note_fr": null
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chess-tracker.com/",
            "note_fr": "informationnel"
          },
          {
            "code": "K1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "K2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chess-tracker.com/datenschutz",
            "note_fr": "informationnel"
          },
          {
            "code": "K3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          }
        ]
      }
    },
    {
      "slug": "shredder-chess",
      "name": "Shredder Chess",
      "url": "https://www.shredderchess.com/",
      "kind": "engine",
      "type": {
        "en": "Engine software with analysis",
        "fr": "Logiciel moteur avec analyse"
      },
      "price": {
        "en": "€99.99 one-off purchase (Deep Shredder 14; Shredder 14 €49.99, Classic €29.99) — no annual price",
        "fr": "99,99 € achat unique (Deep Shredder 14 ; Shredder 14 49,99 €, Classic 29,99 €) — pas d’annuel"
      },
      "languages": 6,
      "read_at": "2026-08-30",
      "scored_overall": false,
      "overall_score": null,
      "unweighted_score": null,
      "category_scores": {
        "A": 2.1,
        "B": 1.1,
        "C": 1.9,
        "D": 5.8,
        "E": 1.7,
        "F": 4,
        "G": 2.5,
        "H": 6,
        "I": 2.5,
        "J": 1.7,
        "K": 3.3
      },
      "scores": {
        "A": [
          1,
          2,
          0,
          0,
          1,
          0,
          1,
          0
        ],
        "B": [
          0,
          0,
          0,
          0,
          2,
          0
        ],
        "C": [
          0,
          1,
          1,
          2,
          1,
          0,
          0,
          0,
          0
        ],
        "D": [
          2,
          1,
          3,
          1
        ],
        "E": [
          0,
          0,
          1,
          1
        ],
        "F": [
          2,
          1,
          1,
          2,
          0
        ],
        "G": [
          0,
          2,
          1,
          0
        ],
        "H": [
          3,
          1,
          2,
          0,
          3
        ],
        "I": [
          0,
          1,
          1,
          1
        ],
        "J": [
          0,
          0,
          0,
          2
        ],
        "K": [
          2,
          0,
          1
        ]
      },
      "evidence_urls": {
        "A": [
          "https://www.shredderchess.com/windows/deep-shredder-14.html",
          "https://www.shredderchess.com/windows/deep-shredder-14.html",
          "https://www.shredderchess.com/windows/deep-shredder-14.html",
          "https://www.shredderchess.com/windows/deep-shredder-14.html",
          "https://www.shredderchess.com/windows/deep-shredder-14.html",
          "https://www.shredderchess.com/",
          "https://www.shredderchess.com/windows/deep-shredder-14.html",
          "https://www.shredderchess.com/"
        ],
        "B": [
          "https://www.shredderchess.com/",
          "https://www.shredderchess.com/windows/deep-shredder-14.html",
          "https://www.shredderchess.com/",
          "https://www.shredderchess.com/",
          "https://www.shredderchess.com/windows/deep-shredder-14.html",
          "https://www.shredderchess.com/"
        ],
        "C": [
          "https://www.shredderchess.com/windows/deep-shredder-14.html",
          "https://www.shredderchess.com/windows/deep-shredder-14.html",
          "https://www.shredderchess.com/online-chess/online-databases/endgame-database.html",
          "https://www.shredderchess.com/windows/chess-tutor.html",
          "https://www.shredderchess.com/windows/deep-shredder-14.html",
          "https://www.shredderchess.com/",
          "https://www.shredderchess.com/windows/deep-shredder-14.html",
          "https://www.shredderchess.com/",
          "https://www.shredderchess.com/"
        ],
        "D": [
          "https://www.shredderchess.com/play-chess-online.html",
          "https://www.shredderchess.com/windows/deep-shredder-14.html",
          "https://www.shredderchess.com/windows/deep-shredder-14.html",
          "https://www.shredderchess.com/windows/deep-shredder-14.html"
        ],
        "E": [
          "https://www.shredderchess.com/",
          "https://www.shredderchess.com/",
          "https://www.shredderchess.com/windows/deep-shredder-14.html",
          "https://www.shredderchess.com/"
        ],
        "F": [
          "https://www.shredderchess.com/windows/chess-tutor.html",
          "https://www.shredderchess.com/windows/chess-tutor.html",
          "https://www.shredderchess.com/windows/chess-tutor.html",
          "https://www.shredderchess.com/windows/chess-tutor.html",
          "https://apps.apple.com/us/app/shredder-chess/id308032437"
        ],
        "G": [
          "https://www.shredderchess.com/play-chess-online.html",
          "https://www.shredderchess.com/windows/deep-shredder-14.html",
          "https://www.shredderchess.com/windows/deep-shredder-14.html",
          "https://www.shredderchess.com/"
        ],
        "H": [
          "https://www.shredderchess.com/",
          "https://apps.apple.com/us/app/shredder-chess/id308032437",
          "https://www.shredderchess.com",
          "https://www.shredderchess.com/",
          "https://www.shredderchess.com/windows/deep-shredder-14.html"
        ],
        "I": [
          "https://www.shredderchess.com/windows/deep-shredder-14.html",
          "https://www.shredderchess.com/windows/deep-shredder-14.html",
          "https://www.shredderchess.com/windows/deep-shredder-14.html",
          "https://www.shredderchess.com/windows/deep-shredder-14.html"
        ],
        "J": [
          "https://www.shredderchess.com/",
          "https://www.shredderchess.com/",
          "https://www.shredderchess.com/",
          "https://www.shredderchess.com/windows/deep-shredder-14.html"
        ],
        "K": [
          "https://www.shredderchess.com/windows/deep-shredder-14.html",
          "https://www.shredderchess.com/",
          "https://www.shredderchess.com/windows/deep-shredder-14.html"
        ]
      },
      "sources": [
        "https://en.wikipedia.org/wiki/Shredder_(software)",
        "https://www.shredderchess.com/",
        "https://talkchess.com/viewtopic.php?t=86676",
        "https://www.shredderchess.com/windows/deep-shredder-14.html",
        "https://www.shredderchess.com/windows/chess-tutor.html",
        "https://www.chess.com/forum/view/general/shredder-14-with-nnue-to-be-out-1st-quarter-2022",
        "https://apps.apple.com/us/app/shredder-chess/id308032437",
        "https://chessprogramming.org/Shredder",
        "https://www.shredderchess.com/online-chess/online-databases/endgame-database.html",
        "https://www.shredderchess.com/play-chess-online.html",
        "https://www.shredderchess.com"
      ],
      "review_url": "https://www.chesspivot.com/en/reviews/shredder-chess",
      "free_access": null
    },
    {
      "slug": "365chess",
      "name": "365Chess",
      "url": "https://www.365chess.com/",
      "kind": "platform",
      "type": {
        "en": "online game database and explorer",
        "fr": "base de parties et explorateur en ligne"
      },
      "price": {
        "en": "€20/yr (Basic Supporter, tiers €20-100, annual price shown on 365chess.com/supporters.php).",
        "fr": "20 €/an (Basic Supporter, paliers 20-100 €, annuel affiché sur 365chess.com/supporters.php)."
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 2.75,
      "unweighted_score": 2.82,
      "category_scores": {
        "A": 1.3,
        "B": 3.3,
        "C": 1.1,
        "D": 7.5,
        "E": 2.5,
        "F": 1.3,
        "G": 1.7,
        "H": 1.3,
        "I": 5.8,
        "J": 0.8,
        "K": 4.4
      },
      "scores": {
        "A": [
          1,
          1,
          1,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          1,
          1,
          1,
          0,
          2,
          1
        ],
        "C": [
          0,
          1,
          1,
          0,
          0,
          0,
          1,
          0,
          0
        ],
        "D": [
          2,
          3,
          1,
          3
        ],
        "E": [
          0,
          0,
          1,
          2
        ],
        "F": [
          0,
          0,
          1,
          0,
          1
        ],
        "G": [
          0,
          1,
          1,
          0
        ],
        "H": [
          1,
          0,
          0,
          0,
          1
        ],
        "I": [
          2,
          1,
          1,
          3
        ],
        "J": [
          0,
          0,
          0,
          1
        ],
        "K": [
          2,
          1,
          1
        ]
      },
      "evidence_urls": {
        "A": [
          "https://www.365chess.com/supporters.php",
          "https://www.365chess.com/supporters.php",
          "https://www.365chess.com/",
          "https://www.365chess.com/",
          "https://www.365chess.com/",
          "https://www.365chess.com/",
          "https://www.365chess.com/",
          "https://www.365chess.com/"
        ],
        "B": [
          "https://www.365chess.com/supporters.php",
          "https://www.365chess.com/supporters.php",
          "https://www.365chess.com/",
          "https://www.365chess.com/",
          "https://www.365chess.com/supporters.php",
          "https://www.365chess.com/"
        ],
        "C": [
          "https://www.365chess.com/",
          "https://www.365chess.com/puzzles.php",
          "https://www.365chess.com/supporters.php",
          "https://www.365chess.com/",
          "https://www.365chess.com/",
          "https://www.365chess.com/",
          "https://www.365chess.com/puzzles.php",
          "https://www.365chess.com/",
          "https://www.365chess.com/"
        ],
        "D": [
          "https://www.365chess.com/supporters.php",
          "https://www.365chess.com/supporters.php",
          "https://www.365chess.com/supporters.php",
          "https://www.365chess.com/supporters.php"
        ],
        "E": [
          "https://www.365chess.com/",
          "https://www.365chess.com/",
          "https://www.365chess.com/supporters.php",
          "https://www.365chess.com/puzzles.php"
        ],
        "F": [
          "https://www.365chess.com/supporters.php",
          "https://www.365chess.com/",
          "https://www.365chess.com/",
          "https://www.365chess.com/",
          "https://www.365chess.com/view/privacy-policy/"
        ],
        "G": [
          "https://www.365chess.com/",
          "https://www.365chess.com/supporters.php",
          "https://www.365chess.com/supporters.php",
          "https://www.365chess.com/"
        ],
        "H": [
          "https://www.365chess.com/",
          "https://www.365chess.com/",
          "https://www.365chess.com/fr/",
          "https://www.365chess.com/",
          "https://www.365chess.com/"
        ],
        "I": [
          "https://www.365chess.com/supporters.php",
          "https://www.365chess.com/supporters.php",
          "https://www.365chess.com/search_position.php",
          "https://www.365chess.com/"
        ],
        "J": [
          "https://www.365chess.com/",
          "https://www.365chess.com/",
          "https://www.365chess.com/",
          "https://www.365chess.com/"
        ],
        "K": [
          "https://www.365chess.com/supporters.php",
          "https://www.365chess.com/view/privacy-policy/",
          "https://www.365chess.com/"
        ]
      },
      "sources": [
        "https://www.365chess.com/supporters.php",
        "https://www.365chess.com/",
        "https://www.365chess.com/puzzles.php",
        "https://www.365chess.com/view/privacy-policy/",
        "https://www.365chess.com/fr/",
        "https://www.365chess.com/search_position.php",
        "https://www.wikidata.org/wiki/Q27529905",
        "https://www.365chess.com/chess-games.php",
        "https://www.365chess.com/view/world-chess-championship-2024/",
        "https://www.chess.com/forum/view/off-topic/365chess-com-has-improved-greatly"
      ],
      "review_url": "https://www.chesspivot.com/en/reviews/365chess",
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 2.2,
        "criteria": [
          {
            "code": "A1",
            "status": "quota-symbolic",
            "quota": "Analysis Board : « limited » (Basic) / « unlimited » (Supporter)",
            "source_url": "https://www.365chess.com/supporters.php",
            "note_fr": "import PGN/FEN via l’Analysis Board ; limite non chiffrée"
          },
          {
            "code": "A2",
            "status": "quota-symbolic",
            "quota": "Analysis Board : « limited » (Basic) / « unlimited » (Supporter)",
            "source_url": "https://www.365chess.com/supporters.php",
            "note_fr": null
          },
          {
            "code": "A3",
            "status": "paid",
            "quota": null,
            "source_url": "https://www.365chess.com/supporters.php",
            "note_fr": "« Create your own Database » cochée uniquement dans la colonne Supporter"
          },
          {
            "code": "A4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B1",
            "status": "quota-symbolic",
            "quota": "Openings Trainer : « limited » (Basic) / « unlimited » (Supporter)",
            "source_url": "https://www.365chess.com/supporters.php",
            "note_fr": null
          },
          {
            "code": "B2",
            "status": "quota-symbolic",
            "quota": "Openings Trainer : « limited » (Basic) / « unlimited » (Supporter)",
            "source_url": "https://www.365chess.com/supporters.php",
            "note_fr": "« As a supporter you will have the possibility to use all the Training Settings »"
          },
          {
            "code": "B3",
            "status": "paid",
            "quota": null,
            "source_url": "https://www.365chess.com/supporters.php",
            "note_fr": "stats sur ses parties = « Create your own Database », Supporter uniquement"
          },
          {
            "code": "B4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B5",
            "status": "quota-symbolic",
            "quota": "Chess Opening Explorer : « limited » (Basic) / « unlimited » (Supporter)",
            "source_url": "https://www.365chess.com/supporters.php",
            "note_fr": null
          },
          {
            "code": "B6",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.365chess.com/supporters.php",
            "note_fr": "« ECO Codes Listing » cochée pour Basic ; pages d’ouvertures publiques"
          },
          {
            "code": "C1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C2",
            "status": "quota-real",
            "quota": "Supporters get unlimited access to the thousands of tactics in the database. Basic Members are limited to 25 puzzles a day.",
            "source_url": "https://www.365chess.com/puzzles.php",
            "note_fr": null
          },
          {
            "code": "C3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.365chess.com/endgame_training.php",
            "note_fr": "absent du tableau des limites de supporters.php ; la page affiche une invite Supporter avec bouton « Continue », aucune limite publiée"
          },
          {
            "code": "C4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C7",
            "status": "quota-real",
            "quota": "Basic Members are limited to 25 puzzles a day.",
            "source_url": "https://www.365chess.com/puzzles.php",
            "note_fr": "cote tactique attribuée en gratuit, dans la limite des 25 puzzles/jour"
          },
          {
            "code": "C8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C9",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.365chess.com/supporters.php",
            "note_fr": null
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.365chess.com/supporters.php",
            "note_fr": "« 1 Year €20 »"
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.365chess.com/supporters.php",
            "note_fr": "prix affiché + « Satisfaction Guaranteed … immediate refund »"
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.365chess.com/supporters.php",
            "note_fr": null
          },
          {
            "code": "E1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.365chess.com/supporters.php",
            "note_fr": "Stockfish nommé (infobulle Play vs Computer)"
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.365chess.com/puzzles.php",
            "note_fr": null
          },
          {
            "code": "F1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.365chess.com/",
            "note_fr": "blog texte public"
          },
          {
            "code": "F4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.365chess.com/view/privacy-policy/",
            "note_fr": null
          },
          {
            "code": "G1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G2",
            "status": "quota-symbolic",
            "quota": "Play against the computer : « limited » (Basic) / « unlimited » (Supporter)",
            "source_url": "https://www.365chess.com/supporters.php",
            "note_fr": "« As a supporter you will have the possibility to save your played games to analyze and download them »"
          },
          {
            "code": "G3",
            "status": "quota-symbolic",
            "quota": "Analysis Board : « limited » (Basic) / « unlimited » (Supporter)",
            "source_url": "https://www.365chess.com/supporters.php",
            "note_fr": null
          },
          {
            "code": "G4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.365chess.com/",
            "note_fr": null
          },
          {
            "code": "H2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.365chess.com/",
            "note_fr": null
          },
          {
            "code": "I1",
            "status": "paid",
            "quota": null,
            "source_url": "https://www.365chess.com/supporters.php",
            "note_fr": "« Player’s Opening Explorer » cochée uniquement Supporter ; la recherche de parties reste « limited » en Basic"
          },
          {
            "code": "I2",
            "status": "quota-symbolic",
            "quota": "Bookmark Analysis : « limited » (Basic) — « As a Supporter you’ll have unlimited bookmarks. »",
            "source_url": "https://www.365chess.com/supporters.php",
            "note_fr": null
          },
          {
            "code": "I3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.365chess.com/supporters.php",
            "note_fr": "« Search a Position » cochée pour Basic ; Board Editor public"
          },
          {
            "code": "I4",
            "status": "paid",
            "quota": null,
            "source_url": "https://www.365chess.com/supporters.php",
            "note_fr": "« Create your own Database » cochée uniquement Supporter"
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.365chess.com/puzzles.php",
            "note_fr": "cote tactique gratuite ; pubs en gratuit (« Ads FREE! » réservé aux Supporters)"
          },
          {
            "code": "K1",
            "status": "paid",
            "quota": null,
            "source_url": "https://www.365chess.com/supporters.php",
            "note_fr": "« Download Games as PGN » cochée uniquement Supporter"
          },
          {
            "code": "K2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.365chess.com/view/privacy-policy/",
            "note_fr": null
          },
          {
            "code": "K3",
            "status": "paid",
            "quota": null,
            "source_url": "https://www.365chess.com/supporters.php",
            "note_fr": "seule ouverture = export PGN, réservé aux Supporters ; aucune API"
          }
        ]
      }
    },
    {
      "slug": "hiarcs-chess-explorer-pro",
      "name": "HIARCS Chess Explorer Pro",
      "url": "https://www.hiarcs.com/",
      "kind": "platform",
      "type": {
        "en": "analysis and database software",
        "fr": "logiciel d’analyse et de bases"
      },
      "price": {
        "en": "€74.95 one-off purchase (hiarcs.com, v1.5.2 April 2026); rule: perpetual licence, no annual price.",
        "fr": "74,95 € achat unique (hiarcs.com, v1.5.2 avril 2026) ; règle : licence perpétuelle, pas d’annuel."
      },
      "languages": 9,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 2.73,
      "unweighted_score": 2.87,
      "category_scores": {
        "A": 2.5,
        "B": 4.4,
        "C": 0.7,
        "D": 4.2,
        "E": 2.5,
        "F": 0.7,
        "G": 1.7,
        "H": 3.3,
        "I": 5.8,
        "J": 2.5,
        "K": 3.3
      },
      "scores": {
        "A": [
          2,
          1,
          1,
          1,
          1,
          0,
          0,
          0
        ],
        "B": [
          2,
          1,
          0,
          2,
          2,
          1
        ],
        "C": [
          0,
          0,
          0,
          2,
          0,
          0,
          0,
          0,
          0
        ],
        "D": [
          0,
          2,
          1,
          2
        ],
        "E": [
          0,
          0,
          2,
          1
        ],
        "F": [
          0,
          0,
          0,
          0,
          1
        ],
        "G": [
          0,
          1,
          1,
          0
        ],
        "H": [
          0,
          0,
          2,
          0,
          3
        ],
        "I": [
          2,
          1,
          1,
          3
        ],
        "J": [
          0,
          1,
          0,
          2
        ],
        "K": [
          2,
          0,
          1
        ]
      },
      "evidence_urls": {
        "A": [
          "https://www.hiarcs.com/",
          "https://www.hiarcs.com/",
          "https://www.hiarcs.com/chess-explorer-pro.html",
          "https://www.hiarcs.com/chess-explorer-pro.html",
          "https://www.hiarcs.com/chess-explorer-pro.html",
          "https://www.hiarcs.com/",
          "https://www.hiarcs.com/",
          "https://www.hiarcs.com/"
        ],
        "B": [
          "https://www.hiarcs.com/",
          "https://www.hiarcs.com/",
          "https://www.hiarcs.com/",
          "https://www.hiarcs.com/",
          "https://www.hiarcs.com/",
          "https://www.hiarcs.com/"
        ],
        "C": [
          "https://www.hiarcs.com/",
          "https://www.hiarcs.com/",
          "https://www.hiarcs.com/",
          "https://www.hiarcs.com/chess-explorer-pro.html",
          "https://www.hiarcs.com/chess-explorer-pro.html",
          "https://www.hiarcs.com/",
          "https://www.hiarcs.com/",
          "https://www.hiarcs.com/chess-explorer-pro.html",
          "https://www.hiarcs.com/chess-explorer-pro.html"
        ],
        "D": [
          "https://www.hiarcs.com/",
          "https://www.hiarcs.com/",
          "https://www.hiarcs.com/",
          "https://www.hiarcs.com/chess-explorer-pro.html"
        ],
        "E": [
          "https://www.hiarcs.com/",
          "https://www.hiarcs.com/",
          "https://www.hiarcs.com/",
          "https://www.hiarcs.com/"
        ],
        "F": [
          "https://www.hiarcs.com/",
          "https://www.hiarcs.com/",
          "https://www.hiarcs.com/",
          "https://www.hiarcs.com/",
          "https://www.hiarcs.com/"
        ],
        "G": [
          "https://www.hiarcs.com/",
          "https://www.hiarcs.com/",
          "https://www.hiarcs.com/",
          "https://www.hiarcs.com/"
        ],
        "H": [
          "https://www.hiarcs.com/",
          "https://www.hiarcs.com/",
          "https://www.hiarcs.com/",
          "https://www.hiarcs.com/",
          "https://www.hiarcs.com/"
        ],
        "I": [
          "https://www.hiarcs.com/chess-explorer-pro.html",
          "https://www.hiarcs.com/chess-explorer-pro.html",
          "https://www.hiarcs.com/chess-explorer-pro.html",
          "https://www.hiarcs.com/chess-explorer-pro.html"
        ],
        "J": [
          "https://www.hiarcs.com/",
          "https://www.hiarcs.com/",
          "https://www.hiarcs.com/",
          "https://www.hiarcs.com/"
        ],
        "K": [
          "https://www.hiarcs.com/",
          "https://www.hiarcs.com/",
          "https://www.hiarcs.com/"
        ]
      },
      "sources": [
        "https://www.hiarcs.com/",
        "https://www.hiarcs.com/chess-explorer-pro.html",
        "https://www.hiarcs.com/news.html",
        "https://www.hiarcs.com/pc-chess-explorer-pro-download.html",
        "https://en.wikipedia.org/wiki/HIARCS"
      ],
      "review_url": "https://www.chesspivot.com/en/reviews/hiarcs-chess-explorer-pro",
      "free_access": null
    },
    {
      "slug": "chesscompass",
      "name": "ChessCompass",
      "url": "https://chesscompass.com",
      "kind": "platform",
      "type": {
        "en": "browser Stockfish analysis, puzzles, bot",
        "fr": "Analyse Stockfish navigateur, puzzles, bot"
      },
      "price": {
        "en": "€0 (free: \"Free · No sign-up required · Runs in your browser\")",
        "fr": "0 € (gratuit : « Free · No sign-up required · Runs in your browser »)"
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 2.71,
      "unweighted_score": 2.28,
      "category_scores": {
        "A": 1.7,
        "B": 1.7,
        "C": 1.9,
        "D": 9.2,
        "E": 2.5,
        "F": 0,
        "G": 1.7,
        "H": 2,
        "I": 0.8,
        "J": 2.5,
        "K": 1.1
      },
      "scores": {
        "A": [
          1,
          2,
          0,
          0,
          1,
          0,
          0,
          0
        ],
        "B": [
          0,
          0,
          0,
          0,
          2,
          1
        ],
        "C": [
          0,
          1,
          0,
          2,
          0,
          0,
          2,
          0,
          0
        ],
        "D": [
          3,
          3,
          2,
          3
        ],
        "E": [
          0,
          0,
          1,
          2
        ],
        "F": [
          0,
          0,
          0,
          0,
          0
        ],
        "G": [
          0,
          1,
          1,
          0
        ],
        "H": [
          1,
          0,
          0,
          0,
          2
        ],
        "I": [
          0,
          0,
          1,
          0
        ],
        "J": [
          0,
          0,
          0,
          3
        ],
        "K": [
          0,
          0,
          1
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 2.71,
        "criteria": [
          {
            "code": "A1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesscompass.com",
            "note_fr": null
          },
          {
            "code": "A2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesscompass.com",
            "note_fr": null
          },
          {
            "code": "A3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesscompass.com",
            "note_fr": null
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesscompass.com",
            "note_fr": null
          },
          {
            "code": "B6",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesscompass.com",
            "note_fr": null
          },
          {
            "code": "C1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesscompass.com",
            "note_fr": null
          },
          {
            "code": "C3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesscompass.com",
            "note_fr": null
          },
          {
            "code": "C5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C7",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesscompass.com",
            "note_fr": null
          },
          {
            "code": "C8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C9",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesscompass.com",
            "note_fr": "« Free · No sign-up required · Runs in your browser »"
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesscompass.com",
            "note_fr": null
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesscompass.com",
            "note_fr": null
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesscompass.com",
            "note_fr": null
          },
          {
            "code": "E1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesscompass.com",
            "note_fr": null
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesscompass.com",
            "note_fr": null
          },
          {
            "code": "F1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesscompass.com",
            "note_fr": null
          },
          {
            "code": "G3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesscompass.com",
            "note_fr": null
          },
          {
            "code": "G4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesscompass.com",
            "note_fr": null
          },
          {
            "code": "H2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesscompass.com",
            "note_fr": "Stockfish exécuté dans le navigateur"
          },
          {
            "code": "I1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesscompass.com",
            "note_fr": null
          },
          {
            "code": "I4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesscompass.com",
            "note_fr": null
          },
          {
            "code": "K1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "K2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "K3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesscompass.com",
            "note_fr": null
          }
        ]
      }
    },
    {
      "slug": "dan-heisman-danheisman-com",
      "name": "Dan Heisman (danheisman.com)",
      "url": "https://www.danheisman.com/",
      "kind": "coaches",
      "type": {
        "en": "one-to-one human coach and author",
        "fr": "coach humain individuel et auteur"
      },
      "price": {
        "en": "$125/hour (seniors $90/h, juniors $100/h) ≈ €115/h. No annual package. Free content: over 400 videos.",
        "fr": "125 $/heure (senior 90 $/h, junior 100 $/h) ≈ 115 €/h. Pas de forfait annuel. Contenu gratuit : plus de 400 vidéos."
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": false,
      "overall_score": null,
      "unweighted_score": null,
      "category_scores": {
        "A": 0.4,
        "B": 2.2,
        "C": 2.6,
        "D": 6.7,
        "E": 5,
        "F": 4,
        "G": 0.8,
        "H": 2.7,
        "I": 0,
        "J": 5.8,
        "K": 0
      },
      "scores": {
        "A": [
          1,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          1,
          0,
          0,
          1,
          0,
          2
        ],
        "C": [
          1,
          0,
          1,
          1,
          1,
          1,
          0,
          0,
          2
        ],
        "D": [
          2,
          1,
          2,
          3
        ],
        "E": [
          1,
          2,
          1,
          2
        ],
        "F": [
          0,
          1,
          2,
          1,
          2
        ],
        "G": [
          0,
          0,
          0,
          1
        ],
        "H": [
          1,
          2,
          0,
          0,
          1
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          3,
          1,
          0,
          3
        ],
        "K": [
          0,
          0,
          0
        ]
      },
      "evidence_urls": {
        "A": [
          "https://www.danheisman.com/lessons.html",
          "https://www.danheisman.com/lessons.html",
          "https://www.danheisman.com/lessons.html",
          "https://www.danheisman.com/lessons.html",
          "https://www.danheisman.com/lessons.html",
          "https://www.danheisman.com/lessons.html",
          "https://www.danheisman.com/lessons.html",
          "https://www.danheisman.com/lessons.html"
        ],
        "B": [
          "https://www.danheisman.com/news-and-notes",
          "https://www.danheisman.com/index.html",
          "https://www.danheisman.com/lessons.html",
          "https://www.danheisman.com/about-dan.html",
          "https://www.danheisman.com/chess-analysis--games.html",
          "https://www.danheisman.com/more.html"
        ],
        "C": [
          "https://www.danheisman.com/lessons.html",
          "https://www.danheisman.com/more.html",
          "https://www.danheisman.com/videos.html",
          "https://www.danheisman.com/dans-books.html",
          "https://www.danheisman.com/dans-books.html",
          "https://www.danheisman.com/lessons.html",
          "https://www.danheisman.com/lessons.html",
          "https://www.danheisman.com/lessons.html",
          "https://www.danheisman.com/lessons.html"
        ],
        "D": [
          "https://www.danheisman.com/videos.html",
          "https://www.danheisman.com/fees.html",
          "https://www.danheisman.com/fees.html",
          "https://www.danheisman.com/fees.html"
        ],
        "E": [
          "https://www.danheisman.com/about-dan.html",
          "https://www.danheisman.com/about-dan.html",
          "https://www.danheisman.com/lessons.html",
          "https://www.danheisman.com/index.html"
        ],
        "F": [
          "https://www.danheisman.com/videos.html",
          "https://www.danheisman.com/about-dan.html",
          "https://www.danheisman.com/videos.html",
          "https://www.danheisman.com/more.html",
          "https://www.danheisman.com/news-and-notes"
        ],
        "G": [
          "https://www.danheisman.com/lessons.html",
          "https://www.danheisman.com/index.html",
          "https://www.danheisman.com/index.html",
          "https://www.danheisman.com/index.html"
        ],
        "H": [
          "https://www.danheisman.com/",
          "https://www.danheisman.com/about-dan.html",
          "https://www.danheisman.com/",
          "https://www.danheisman.com/",
          "https://www.danheisman.com/videos.html"
        ],
        "I": [
          "https://www.danheisman.com/lessons.html",
          "https://www.danheisman.com/lessons.html",
          "https://www.danheisman.com/lessons.html",
          "https://www.danheisman.com/lessons.html"
        ],
        "J": [
          "https://www.danheisman.com/lessons.html",
          "https://www.danheisman.com/index.html",
          "https://www.danheisman.com/fees.html",
          "https://www.danheisman.com/lessons.html"
        ],
        "K": [
          "https://www.danheisman.com/lessons.html",
          "https://www.danheisman.com/privacy-policy.html",
          "https://www.danheisman.com/"
        ]
      },
      "sources": [
        "https://www.danheisman.com/",
        "https://www.danheisman.com/about-dan.html",
        "https://www.danheisman.com/lessons.html",
        "https://www.danheisman.com/fees.html",
        "https://www.danheisman.com/news-and-notes",
        "https://www.danheisman.com/index.html",
        "https://www.danheisman.com/chess-analysis--games.html",
        "https://www.danheisman.com/more.html",
        "https://www.danheisman.com/videos.html",
        "https://www.danheisman.com/dans-books.html",
        "https://www.danheisman.com/privacy-policy.html"
      ],
      "review_url": "https://www.chesspivot.com/en/reviews/dan-heisman-danheisman-com",
      "free_access": null
    },
    {
      "slug": "stockfish-projet-plus-apps-officielles",
      "name": "Stockfish (projet + apps officielles)",
      "url": "https://stockfishchess.org/",
      "kind": "engine",
      "type": {
        "en": "open-source chess engine",
        "fr": "moteur d’échecs open source"
      },
      "price": {
        "en": "€0 (GPL v3; \"Stockfish Chess\" Mac app free; SmallFish iOS $4.99 ≈ €4.59)",
        "fr": "0 € (GPL v3 ; app Mac « Stockfish Chess » gratuite ; SmallFish iOS 4,99 $ ≈ 4,59 €)"
      },
      "languages": 2,
      "read_at": "2026-08-30",
      "scored_overall": false,
      "overall_score": null,
      "unweighted_score": null,
      "category_scores": {
        "A": 0.4,
        "B": 0,
        "C": 0,
        "D": 10,
        "E": 7.5,
        "F": 0,
        "G": 1.7,
        "H": 6,
        "I": 2.5,
        "J": 3.3,
        "K": 5.6
      },
      "scores": {
        "A": [
          0,
          1,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "C": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "D": [
          3,
          3,
          3,
          3
        ],
        "E": [
          0,
          3,
          3,
          3
        ],
        "F": [
          0,
          0,
          0,
          0,
          0
        ],
        "G": [
          0,
          1,
          1,
          0
        ],
        "H": [
          2,
          3,
          1,
          0,
          3
        ],
        "I": [
          0,
          1,
          1,
          1
        ],
        "J": [
          0,
          2,
          0,
          2
        ],
        "K": [
          0,
          2,
          3
        ]
      },
      "evidence_urls": {
        "A": [
          "https://stockfishchess.org/download/",
          "https://stockfishchess.org/",
          "https://stockfishchess.org/",
          "https://stockfishchess.org/",
          "https://stockfishchess.org/",
          "https://stockfishchess.org/",
          "https://stockfishchess.org/"
        ],
        "B": [
          "https://stockfishchess.org/",
          "https://stockfishchess.org/",
          "https://stockfishchess.org/",
          "https://stockfishchess.org/",
          "https://stockfishchess.org/",
          "https://stockfishchess.org/"
        ],
        "C": [
          "https://stockfishchess.org/",
          "https://stockfishchess.org/",
          "https://stockfishchess.org/",
          "https://stockfishchess.org/",
          "https://stockfishchess.org/",
          "https://stockfishchess.org/",
          "https://stockfishchess.org/",
          "https://stockfishchess.org/"
        ],
        "D": [
          "https://stockfishchess.org/",
          "https://stockfishchess.org/",
          "https://stockfishchess.org/",
          "https://stockfishchess.org/download/"
        ],
        "E": [
          "https://stockfishchess.org/",
          "https://github.com/official-stockfish/Stockfish",
          "https://github.com/official-stockfish/Stockfish",
          "https://github.com/official-stockfish/Stockfish"
        ],
        "F": [
          "https://stockfishchess.org/",
          "https://stockfishchess.org/",
          "https://stockfishchess.org/",
          "https://stockfishchess.org/",
          "https://stockfishchess.org/blog/"
        ],
        "G": [
          "https://stockfishchess.org/",
          "https://stockfishchess.org/"
        ],
        "H": [
          "https://stockfishchess.org/download/",
          "https://stockfishchess.org/",
          "https://stockfishchess.org/download/"
        ],
        "I": [
          "https://stockfishchess.org/download/",
          "https://apps.apple.com/us/app/stockfish-chess/id801463932",
          "https://apps.apple.com/us/app/smallfish-chess-for-stockfish/id675049147",
          "https://apps.apple.com/us/app/smallfish-chess-for-stockfish/id675049147"
        ],
        "J": [
          "https://stockfishchess.org/",
          "https://stockfishchess.org/",
          "https://stockfishchess.org/"
        ],
        "K": [
          "https://stockfishchess.org/",
          "https://stockfishchess.org/download/",
          "https://github.com/official-stockfish/Stockfish"
        ]
      },
      "sources": [
        "https://github.com/official-stockfish/Stockfish",
        "https://stockfishchess.org/about/",
        "https://stockfishchess.org/download/",
        "https://apps.apple.com/us/app/stockfish-chess/id801463932",
        "https://apps.apple.com/us/app/smallfish-chess-for-stockfish/id675049147",
        "https://stockfishchess.org/blog/2026/stockfish-18/",
        "https://stockfishchess.org/blog/",
        "https://stockfishchess.org/"
      ],
      "review_url": "https://www.chesspivot.com/en/reviews/stockfish-projet-plus-apps-officielles",
      "free_access": null
    },
    {
      "slug": "chessdock",
      "name": "Chessdock",
      "url": "https://chessdock.com/",
      "kind": "platform",
      "type": {
        "en": "automatic review and personal puzzles",
        "fr": "revue automatique et puzzles personnels"
      },
      "price": {
        "en": "$59.99/yr ≈ €55 (annual price shown); monthly $7.99; 7-day trial, no card required.",
        "fr": "59,99 $/an ≈ 55 € (annuel affiché) ; mensuel 7,99 $ ; essai 7 jours sans carte."
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 2.69,
      "unweighted_score": 2.31,
      "category_scores": {
        "A": 3.3,
        "B": 0,
        "C": 3,
        "D": 5.8,
        "E": 4.2,
        "F": 2,
        "G": 0.8,
        "H": 2.7,
        "I": 0.8,
        "J": 1.7,
        "K": 1.1
      },
      "scores": {
        "A": [
          2,
          2,
          0,
          2,
          2,
          0,
          0,
          0
        ],
        "B": [
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "C": [
          2,
          0,
          0,
          2,
          0,
          0,
          0,
          2,
          2
        ],
        "D": [
          1,
          2,
          2,
          2
        ],
        "E": [
          0,
          2,
          1,
          2
        ],
        "F": [
          0,
          0,
          1,
          1,
          1
        ],
        "G": [
          0,
          0,
          1,
          0
        ],
        "H": [
          3,
          0,
          0,
          0,
          1
        ],
        "I": [
          0,
          0,
          0,
          1
        ],
        "J": [
          0,
          0,
          0,
          2
        ],
        "K": [
          0,
          1,
          0
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": null
    },
    {
      "slug": "apprendrelesechecs-com",
      "name": "Apprendrelesechecs.com",
      "url": "https://www.apprendrelesechecs.com/",
      "kind": "platform",
      "type": {
        "en": "French site of free text + video lessons",
        "fr": "site FR de cours gratuits texte + vidéo"
      },
      "price": {
        "en": "€0 (free site, no paid offer)",
        "fr": "0 € (site gratuit, aucune offre payante)"
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 2.64,
      "unweighted_score": 2.03,
      "category_scores": {
        "A": 0,
        "B": 2.8,
        "C": 1.5,
        "D": 10,
        "E": 1.7,
        "F": 3.3,
        "G": 0,
        "H": 1.3,
        "I": 0,
        "J": 1.7,
        "K": 0
      },
      "scores": {
        "A": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          1,
          0,
          0,
          1,
          0,
          3
        ],
        "C": [
          0,
          1,
          1,
          1,
          0,
          0,
          0,
          0,
          1
        ],
        "D": [
          3,
          3,
          3,
          3
        ],
        "E": [
          0,
          0,
          0,
          2
        ],
        "F": [
          1,
          2,
          2,
          0,
          0
        ],
        "G": [
          0,
          0,
          0,
          0
        ],
        "H": [
          1,
          0,
          0,
          0,
          1
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          0,
          0,
          0,
          2
        ],
        "K": [
          0,
          0,
          0
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 2.64,
        "criteria": [
          {
            "code": "A1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.apprendrelesechecs.com/cours/",
            "note_fr": null
          },
          {
            "code": "B2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.apprendrelesechecs.com/cours/defense-petrov-russe-guide-ouvertures-noirs.php",
            "note_fr": null
          },
          {
            "code": "B5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B6",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.apprendrelesechecs.com/cours/defense-petrov-russe-guide-ouvertures-noirs.php",
            "note_fr": null
          },
          {
            "code": "C1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.apprendrelesechecs.com/",
            "note_fr": "« Téléchargez gratuitement et légalement … 1000 exercices tactiques … au format PDF »"
          },
          {
            "code": "C3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.apprendrelesechecs.com/cours/",
            "note_fr": null
          },
          {
            "code": "C4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.apprendrelesechecs.com/cours/",
            "note_fr": null
          },
          {
            "code": "C5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C9",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.apprendrelesechecs.com/",
            "note_fr": null
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.apprendrelesechecs.com/",
            "note_fr": "« Apprendre Gratuitement » / « apprendre à jouer aux échecs gratuitement en ligne »"
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.apprendrelesechecs.com/",
            "note_fr": null
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.apprendrelesechecs.com/",
            "note_fr": null
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.apprendrelesechecs.com/",
            "note_fr": null
          },
          {
            "code": "E1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.apprendrelesechecs.com/",
            "note_fr": null
          },
          {
            "code": "F1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.apprendrelesechecs.com/cours/",
            "note_fr": null
          },
          {
            "code": "F2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.apprendrelesechecs.com/cours/defense-petrov-russe-guide-ouvertures-noirs.php",
            "note_fr": null
          },
          {
            "code": "F3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.apprendrelesechecs.com/cours/defense-petrov-russe-guide-ouvertures-noirs.php",
            "note_fr": null
          },
          {
            "code": "F4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.apprendrelesechecs.com/",
            "note_fr": null
          },
          {
            "code": "H2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.apprendrelesechecs.com/",
            "note_fr": null
          },
          {
            "code": "I1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.apprendrelesechecs.com/",
            "note_fr": null
          },
          {
            "code": "K1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "K2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "K3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          }
        ]
      }
    },
    {
      "slug": "chess-in-schools-and-communities-uk",
      "name": "Chess in Schools and Communities (UK)",
      "url": "https://www.chessinschools.co.uk/",
      "kind": "institution",
      "type": {
        "en": "Charity, chess in schools",
        "fr": "Association caritative, échecs à l’école"
      },
      "price": {
        "en": "€0 for the online \"Chess at Home\" resources (free); school programme on request, price not shown",
        "fr": "0 € pour les ressources en ligne « Chess at Home » (gratuit) ; programme scolaire sur demande, tarif non affiché"
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": false,
      "overall_score": null,
      "unweighted_score": null,
      "category_scores": {
        "A": 0,
        "B": 0.6,
        "C": 2.2,
        "D": 8.3,
        "E": 3.3,
        "F": 4.7,
        "G": 0.8,
        "H": 3.3,
        "I": 0,
        "J": 5.8,
        "K": 2.2
      },
      "scores": {
        "A": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          0,
          0,
          0,
          0,
          0,
          1
        ],
        "C": [
          0,
          0,
          1,
          2,
          2,
          0,
          0,
          0,
          1
        ],
        "D": [
          3,
          3,
          1,
          3
        ],
        "E": [
          1,
          0,
          1,
          2
        ],
        "F": [
          2,
          0,
          2,
          2,
          1
        ],
        "G": [
          0,
          0,
          0,
          1
        ],
        "H": [
          1,
          0,
          0,
          3,
          1
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          2,
          2,
          1,
          2
        ],
        "K": [
          1,
          1,
          0
        ]
      },
      "evidence_urls": {
        "A": [
          "https://www.chessinschools.co.uk/",
          "https://www.chessinschools.co.uk/",
          "https://www.chessinschools.co.uk/chess-at-home",
          "https://www.chessinschools.co.uk/chess-at-home",
          "https://www.chessinschools.co.uk/chess-at-home",
          "https://www.chessinschools.co.uk/",
          "https://www.chessinschools.co.uk/",
          "https://www.chessinschools.co.uk/"
        ],
        "B": [
          "https://www.chessinschools.co.uk/chess-at-home",
          "https://www.chessinschools.co.uk/chess-at-home",
          "https://www.chessinschools.co.uk/",
          "https://www.chessinschools.co.uk/chess-at-home",
          "https://www.chessinschools.co.uk/",
          "https://www.chessinschools.co.uk/chess-at-home"
        ],
        "C": [
          "https://www.chessinschools.co.uk/chess-at-home",
          "https://www.chessinschools.co.uk/chess-at-home",
          "https://www.chessinschools.co.uk/chess-at-home",
          "https://www.chessinschools.co.uk/chess-at-home",
          "https://www.chessinschools.co.uk/chess-at-home",
          "https://www.chessinschools.co.uk/chess-at-home",
          "https://www.chessinschools.co.uk/chess-at-home",
          "https://www.chessinschools.co.uk/chess-at-home",
          "https://www.chessinschools.co.uk/chess-at-home"
        ],
        "D": [
          "https://www.chessinschools.co.uk/chess-at-home",
          "https://www.chessinschools.co.uk/chess-at-home",
          "https://www.chessinschools.co.uk/",
          "https://www.chessinschools.co.uk/chess-at-home"
        ],
        "E": [
          "https://www.chessinschools.co.uk/research",
          "https://www.chessinschools.co.uk/chess-at-home",
          "https://www.chessinschools.co.uk/csc-curriculum",
          "https://www.chessinschools.co.uk/csc-curriculum"
        ],
        "F": [
          "https://www.chessinschools.co.uk/csc-curriculum",
          "https://www.chessinschools.co.uk/csc-curriculum",
          "https://www.chessinschools.co.uk/chess-at-home",
          "https://www.chessinschools.co.uk/csc-curriculum",
          "https://www.chessinschools.co.uk/"
        ],
        "G": [
          "https://www.chessinschools.co.uk/chess-at-home",
          "https://www.chessinschools.co.uk/",
          "https://www.chessinschools.co.uk/",
          "https://www.chessinschools.co.uk/"
        ],
        "H": [
          "https://www.chessinschools.co.uk/",
          "https://www.chessinschools.co.uk/",
          "https://www.chessinschools.co.uk/",
          "https://www.chessinschools.co.uk/accessibility",
          "https://www.chessinschools.co.uk/chess-at-home"
        ],
        "I": [
          "https://www.chessinschools.co.uk/chess-at-home",
          "https://www.chessinschools.co.uk/chess-at-home",
          "https://www.chessinschools.co.uk/chess-at-home",
          "https://www.chessinschools.co.uk/chess-at-home"
        ],
        "J": [
          "https://www.chessinschools.co.uk/become-a-tutor-schools",
          "https://www.chessinschools.co.uk/",
          "https://www.chessinschools.co.uk/the-tutor-zone",
          "https://www.chessinschools.co.uk/"
        ],
        "K": [
          "https://www.chessinschools.co.uk/privacy-policy",
          "https://www.chessinschools.co.uk/privacy-policy",
          "https://www.chessinschools.co.uk/"
        ]
      },
      "sources": [
        "https://www.chessinschools.co.uk/",
        "https://www.chessinschools.co.uk/chess-at-home",
        "https://www.chessinschools.co.uk/csc-curriculum",
        "https://www.chessinschools.co.uk/news",
        "https://www.chessinschools.co.uk/news/google-deepmind-chess-pioneers",
        "https://www.chessinschools.co.uk/who-we-are",
        "https://en.chessbase.com/post/che-in-schools-pein-in-the-palace",
        "https://www.chesstech.org/2020/chessathome/",
        "https://www.chessinschools.co.uk/research",
        "https://www.chessinschools.co.uk/accessibility",
        "https://www.chessinschools.co.uk/become-a-tutor-schools",
        "https://www.chessinschools.co.uk/the-tutor-zone",
        "https://www.chessinschools.co.uk/privacy-policy"
      ],
      "review_url": "https://www.chesspivot.com/en/reviews/chess-in-schools-and-communities-uk",
      "free_access": null
    },
    {
      "slug": "forward-chess",
      "name": "Forward Chess",
      "url": "https://forwardchess.com/",
      "kind": "platform",
      "type": {
        "en": "Interactive chess book reader",
        "fr": "Lecteur de livres d’échecs interactifs"
      },
      "price": {
        "en": "No subscription for the app itself: books sold individually $14.99–27.99 (≈ €14–26); ChessPublishing subscriptions as in-app purchases $19.99–99.99/yr (≈ €18–92). Rule: shown price of the largest subscription ($99.99 ≈ €92/yr) for lack of a single full offer.",
        "fr": "Pas d’abonnement à l’application : livres à l’unité 14,99–27,99 $ (≈ 14–26 €) ; abonnements ChessPublishing en achat intégré 19,99–99,99 $/an (≈ 18–92 €). Règle : prix affiché du plus gros abonnement (99,99 $ ≈ 92 €/an) faute d’offre complète unique."
      },
      "languages": 2,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 2.61,
      "unweighted_score": 2.66,
      "category_scores": {
        "A": 0.4,
        "B": 3.3,
        "C": 2.2,
        "D": 2.5,
        "E": 4.2,
        "F": 6.7,
        "G": 0,
        "H": 5.3,
        "I": 0,
        "J": 2.5,
        "K": 2.2
      },
      "scores": {
        "A": [
          0,
          1,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          1,
          1,
          0,
          1,
          0,
          3
        ],
        "C": [
          0,
          1,
          2,
          2,
          0,
          1,
          0,
          0,
          0
        ],
        "D": [
          1,
          1,
          1,
          0
        ],
        "E": [
          0,
          1,
          2,
          2
        ],
        "F": [
          2,
          3,
          2,
          0,
          3
        ],
        "G": [
          0,
          0,
          0,
          0
        ],
        "H": [
          3,
          2,
          1,
          0,
          2
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          0,
          0,
          0,
          3
        ],
        "K": [
          1,
          1,
          0
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": null
    },
    {
      "slug": "capakaspa",
      "name": "Capakaspa",
      "url": "https://www.capakaspa.info/",
      "kind": "platform",
      "type": {
        "en": "French news and play portal",
        "fr": "portail français d’actualité et de jeu"
      },
      "price": {
        "en": "Free (site) — rule: free; partner video courses sold separately (€24.90 to €71.99 as one-off purchases).",
        "fr": "Gratuit (site) — règle : gratuit ; formations vidéo partenaires vendues à part (24,90 € à 71,99 € en achat unique)."
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 2.61,
      "unweighted_score": 2.38,
      "category_scores": {
        "A": 0,
        "B": 1.1,
        "C": 1.1,
        "D": 10,
        "E": 1.7,
        "F": 6,
        "G": 1.7,
        "H": 1.3,
        "I": 0.8,
        "J": 2.5,
        "K": 0
      },
      "scores": {
        "A": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          0,
          0,
          0,
          0,
          0,
          2
        ],
        "C": [
          0,
          1,
          1,
          1,
          0,
          0,
          0,
          0,
          0
        ],
        "D": [
          3,
          3,
          3,
          3
        ],
        "E": [
          0,
          0,
          0,
          2
        ],
        "F": [
          1,
          2,
          2,
          1,
          3
        ],
        "G": [
          1,
          1,
          0,
          0
        ],
        "H": [
          1,
          0,
          0,
          0,
          1
        ],
        "I": [
          0,
          1,
          0,
          0
        ],
        "J": [
          0,
          1,
          0,
          2
        ],
        "K": [
          0,
          0,
          0
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 2.45,
        "criteria": [
          {
            "code": "A1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B6",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.capakaspa.info/",
            "note_fr": null
          },
          {
            "code": "C1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.capakaspa.info/jouer-aux-echecs-capakaspa/diagramme-echecs-du-jour/",
            "note_fr": "« résoudre quotidiennement des diagrammes d’échecs » — accès libre"
          },
          {
            "code": "C3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.capakaspa.info/apprendre-a-jouer-aux-echecs/theorie-finales-aux-echecs/",
            "note_fr": null
          },
          {
            "code": "C4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.capakaspa.info/",
            "note_fr": null
          },
          {
            "code": "C5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C9",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.capakaspa.info/",
            "note_fr": null
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.capakaspa.info/boutique-jeu-echecs/formations-en-ligne-jeu-echecs/",
            "note_fr": "site gratuit ; formations partenaires 24,90–71,99 € en achat unique"
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.capakaspa.info/boutique-jeu-echecs/formations-en-ligne-jeu-echecs/",
            "note_fr": null
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.capakaspa.info/",
            "note_fr": null
          },
          {
            "code": "E1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.capakaspa.info/",
            "note_fr": null
          },
          {
            "code": "F1",
            "status": "paid",
            "quota": null,
            "source_url": "https://www.capakaspa.info/boutique-jeu-echecs/formations-en-ligne-jeu-echecs/",
            "note_fr": "formations partenaires en achat unique (24,90–71,99 €) ; les cours texte gratuits n’ont pas d’étiquette de niveau"
          },
          {
            "code": "F2",
            "status": "paid",
            "quota": null,
            "source_url": "https://www.capakaspa.info/boutique-jeu-echecs/formations-en-ligne-jeu-echecs/",
            "note_fr": "les auteurs titrés (GM Wirig, GM Gharamian) ne signent que les formations vidéo payantes"
          },
          {
            "code": "F3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.capakaspa.info/",
            "note_fr": "texte du site en libre accès ; les vidéos sont des formations partenaires en achat unique (24,90–71,99 €)"
          },
          {
            "code": "F4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.capakaspa.info/",
            "note_fr": null
          },
          {
            "code": "F5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.capakaspa.info/",
            "note_fr": null
          },
          {
            "code": "G1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.capakaspa.info/jouer-aux-echecs-capakaspa/",
            "note_fr": "jeu en différé gratuit — « inscription pour jouer aux échecs en ligne en différé » (compte gratuit)"
          },
          {
            "code": "G2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.capakaspa.info/jouer-aux-echecs-capakaspa/",
            "note_fr": "« Jouer aux échecs avec Fritz / Cinnamon / GarboChess / Shredder » en libre accès"
          },
          {
            "code": "G3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.capakaspa.info/",
            "note_fr": null
          },
          {
            "code": "H2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.capakaspa.info/",
            "note_fr": null
          },
          {
            "code": "I1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.capakaspa.info/category/parties/",
            "note_fr": "lecture libre"
          },
          {
            "code": "I3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.capakaspa.info/forums-echecs-sujets/",
            "note_fr": null
          },
          {
            "code": "J3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.capakaspa.info/",
            "note_fr": null
          },
          {
            "code": "K1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "K2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "K3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          }
        ]
      }
    },
    {
      "slug": "arena-chess-gui",
      "name": "Arena Chess GUI",
      "url": "https://www.playwitharena.de/",
      "kind": "engine",
      "type": {
        "en": "old freeware engine interface",
        "fr": "interface moteur freeware ancienne"
      },
      "price": {
        "en": "€0 (freeware)",
        "fr": "0 € (freeware)"
      },
      "languages": 8,
      "read_at": "2026-08-30",
      "scored_overall": false,
      "overall_score": null,
      "unweighted_score": null,
      "category_scores": {
        "A": 1.3,
        "B": 1.1,
        "C": 0,
        "D": 10,
        "E": 2.5,
        "F": 0,
        "G": 2.5,
        "H": 3.3,
        "I": 4.2,
        "J": 1.7,
        "K": 6.7
      },
      "scores": {
        "A": [
          1,
          2,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          0,
          0,
          0,
          0,
          1,
          1
        ],
        "C": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "D": [
          3,
          3,
          3,
          3
        ],
        "E": [
          0,
          0,
          1,
          2
        ],
        "F": [
          0,
          0,
          0,
          0,
          0
        ],
        "G": [
          1,
          1,
          1,
          0
        ],
        "H": [
          0,
          0,
          2,
          0,
          3
        ],
        "I": [
          0,
          1,
          1,
          3
        ],
        "J": [
          0,
          0,
          0,
          2
        ],
        "K": [
          3,
          2,
          1
        ]
      },
      "evidence_urls": {
        "A": [
          "https://www.playwitharena.de/",
          "https://www.playwitharena.de/",
          "https://www.playwitharena.de/",
          "https://www.playwitharena.de/",
          "https://www.playwitharena.de/",
          "https://www.playwitharena.de/",
          "https://www.playwitharena.de/",
          "https://www.playwitharena.de/"
        ],
        "B": [
          "https://www.playwitharena.de/",
          "https://www.playwitharena.de/",
          "https://www.playwitharena.de/",
          "https://www.playwitharena.de/",
          "https://www.playwitharena.de/",
          "https://www.playwitharena.de/"
        ],
        "C": [
          "https://www.playwitharena.de/",
          "https://www.playwitharena.de/",
          "https://www.playwitharena.de/",
          "https://www.playwitharena.de/",
          "https://www.playwitharena.de/",
          "https://www.playwitharena.de/",
          "https://www.playwitharena.de/",
          "https://www.playwitharena.de/",
          "https://www.playwitharena.de/"
        ],
        "D": [
          "https://www.playwitharena.de/",
          "https://www.playwitharena.de/",
          "https://www.playwitharena.de/",
          "https://www.playwitharena.de/"
        ],
        "E": [
          "https://www.playwitharena.de/",
          "https://www.playwitharena.de/",
          "https://www.chessprogramming.org/Arena",
          "https://www.playwitharena.de/"
        ],
        "F": [
          "https://www.playwitharena.de/",
          "https://www.playwitharena.de/",
          "https://www.playwitharena.de/",
          "https://www.playwitharena.de/",
          "https://www.playwitharena.de/"
        ],
        "G": [
          "https://www.chessprogramming.org/Arena",
          "https://www.playwitharena.de/",
          "https://www.playwitharena.de/",
          "https://www.playwitharena.de/"
        ],
        "H": [
          "https://www.playwitharena.de/",
          "https://www.playwitharena.de/",
          "http://www.playwitharena.de",
          "https://www.playwitharena.de/",
          "https://www.playwitharena.de/"
        ],
        "I": [
          "https://www.playwitharena.de/",
          "https://www.playwitharena.de/",
          "https://www.playwitharena.de/",
          "https://www.playwitharena.de/"
        ],
        "J": [
          "https://www.playwitharena.de/",
          "https://www.playwitharena.de/",
          "https://www.playwitharena.de/",
          "https://www.playwitharena.de/"
        ],
        "K": [
          "https://www.playwitharena.de/",
          "https://www.playwitharena.de/",
          "https://www.chessprogramming.org/Arena"
        ]
      },
      "sources": [
        "https://www.playwitharena.de/",
        "https://www.chessprogramming.org/Arena",
        "http://www.playwitharena.de",
        "https://www.playwitharena.de/?Download"
      ],
      "review_url": "https://www.chesspivot.com/en/reviews/arena-chess-gui",
      "free_access": null
    },
    {
      "slug": "fics",
      "name": "FICS",
      "url": "https://www.freechess.org",
      "kind": "platform",
      "type": {
        "en": "Historic free chess server (1995)",
        "fr": "Serveur d’échecs gratuit historique (1995)"
      },
      "price": {
        "en": "€0 (free: \"Membership with FICS is completely free\", PayPal donations)",
        "fr": "0 € (gratuit : « Membership with FICS is completely free », dons PayPal)"
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 2.6,
      "unweighted_score": 3.19,
      "category_scores": {
        "A": 0.8,
        "B": 0.6,
        "C": 0.4,
        "D": 10,
        "E": 3.3,
        "F": 0,
        "G": 4.2,
        "H": 2.7,
        "I": 3.3,
        "J": 4.2,
        "K": 5.6
      },
      "scores": {
        "A": [
          0,
          0,
          0,
          0,
          0,
          0,
          1,
          1
        ],
        "B": [
          0,
          0,
          0,
          0,
          1,
          0
        ],
        "C": [
          0,
          1,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "D": [
          3,
          3,
          3,
          3
        ],
        "E": [
          0,
          0,
          2,
          2
        ],
        "F": [
          0,
          0,
          0,
          0,
          0
        ],
        "G": [
          1,
          1,
          1,
          2
        ],
        "H": [
          3,
          0,
          0,
          0,
          1
        ],
        "I": [
          1,
          1,
          1,
          1
        ],
        "J": [
          1,
          2,
          0,
          2
        ],
        "K": [
          2,
          1,
          2
        ]
      },
      "evidence_urls": {
        "A": [
          "https://www.freechess.org",
          "https://www.freechess.org",
          "https://www.freechess.org",
          "https://www.freechess.org",
          "https://www.freechess.org",
          "https://www.freechess.org",
          "https://en.wikipedia.org/wiki/Free_Internet_Chess_Server",
          "https://www.freechess.org"
        ],
        "B": [
          "https://www.freechess.org",
          "https://www.freechess.org",
          "https://www.freechess.org",
          "https://www.freechess.org",
          "https://github.com/freechessclub",
          "https://www.freechess.org"
        ],
        "C": [
          "https://www.freechess.org",
          "https://www.freechess.club",
          "https://www.freechess.org",
          "https://www.freechess.org",
          "https://www.freechess.org",
          "https://www.freechess.org",
          "https://www.freechess.org",
          "https://www.freechess.org",
          "https://www.freechess.org"
        ],
        "D": [
          "https://www.freechess.org/Help/HelpFiles/register.html",
          "https://www.freechess.org",
          "https://www.freechess.org",
          "https://www.freechess.org"
        ],
        "E": [
          "https://www.freechess.org",
          "https://www.freechess.org",
          "https://en.wikipedia.org/wiki/Free_Internet_Chess_Server",
          "https://www.freechess.org"
        ],
        "F": [
          "https://www.freechess.org",
          "https://www.freechess.org",
          "https://www.freechess.org",
          "https://www.freechess.org",
          "https://www.freechess.org"
        ],
        "G": [
          "https://www.freechess.org",
          "https://www.freechess.org/Help/HelpFiles/computers.html",
          "https://www.freechess.org/Help/HelpFiles/examine.html",
          "https://www.freechess.org/Help/HelpFiles/mamer.html"
        ],
        "H": [
          "https://www.freechess.org/cgi-bin/Download/FICS_Download.cgi",
          "https://www.freechess.org",
          "https://www.freechess.org",
          "https://www.freechess.org",
          "https://www.freechess.org"
        ],
        "I": [
          "https://www.freechess.org/Help/HelpFiles/history.html",
          "https://www.freechess.org",
          "https://www.freechess.org/Help/HelpFiles/examine.html",
          "https://www.freechess.org/Help/HelpFiles/journal.html"
        ],
        "J": [
          "https://www.freechess.org",
          "https://www.freechess.org/Help/HelpFiles/mamer.html",
          "https://www.freechess.org",
          "https://www.freechess.org"
        ],
        "K": [
          "https://www.freechess.org",
          "https://www.freechess.org/Help/HelpFiles/register.html",
          "https://www.freechess.org/Help/HelpFiles/"
        ]
      },
      "sources": [
        "https://www.freechess.org",
        "https://en.wikipedia.org/wiki/Free_Internet_Chess_Server",
        "https://www.freechess.org/Help/HelpFiles/register.html",
        "https://www.freechess.club",
        "https://www.freechess.org/cgi-bin/Download/FICS_Download.cgi",
        "https://github.com/freechessclub",
        "https://www.freechess.org/Help/HelpFiles/",
        "https://www.freechess.org/Help/HelpFiles/computers.html",
        "https://www.freechess.org/Help/HelpFiles/examine.html",
        "https://www.freechess.org/Help/HelpFiles/mamer.html",
        "https://www.freechess.org/Help/HelpFiles/history.html",
        "https://www.freechess.org/Help/HelpFiles/journal.html"
      ],
      "review_url": "https://www.chesspivot.com/en/reviews/fics",
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 2.6,
        "criteria": [
          {
            "code": "A1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A7",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.freechess.org",
            "note_fr": "« Membership with FICS is completely free » — serveur entièrement gratuit (register.html) ; classement Glicko et historique"
          },
          {
            "code": "A8",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.freechess.org",
            "note_fr": "« Membership with FICS is completely free » — serveur entièrement gratuit"
          },
          {
            "code": "B1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/freechessclub",
            "note_fr": "explorateur du client tiers libre freechessclub-openingexplorer"
          },
          {
            "code": "B6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.freechess.club",
            "note_fr": "puzzles via le client web gratuit"
          },
          {
            "code": "C3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C9",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.freechess.org/Help/HelpFiles/register.html",
            "note_fr": "« Membership with FICS is completely free »"
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.freechess.org/Help/HelpFiles/register.html",
            "note_fr": null
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.freechess.org/Help/HelpFiles/register.html",
            "note_fr": "aucun paiement ; dons seulement"
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.freechess.org/Help/HelpFiles/register.html",
            "note_fr": null
          },
          {
            "code": "E1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.freechess.org/Help/HelpFiles/",
            "note_fr": null
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.freechess.org",
            "note_fr": null
          },
          {
            "code": "F1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.freechess.org",
            "note_fr": "« Membership with FICS is completely free » — serveur entièrement gratuit"
          },
          {
            "code": "G2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.freechess.org/Help/HelpFiles/computers.html",
            "note_fr": null
          },
          {
            "code": "G3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.freechess.org/Help/HelpFiles/examine.html",
            "note_fr": null
          },
          {
            "code": "G4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.freechess.org/Help/HelpFiles/mamer.html",
            "note_fr": "tournois mamer gratuits en continu"
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.freechess.org/cgi-bin/Download/FICS_Download.cgi",
            "note_fr": "clients gratuits Windows/Mac/Linux/Android/iOS/web"
          },
          {
            "code": "H2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.freechess.org",
            "note_fr": null
          },
          {
            "code": "I1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.freechess.org/Help/HelpFiles/history.html",
            "note_fr": null
          },
          {
            "code": "I2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.freechess.org/Help/HelpFiles/examine.html",
            "note_fr": "examine collaboratif + Teaching Ladder bénévole, gratuits"
          },
          {
            "code": "I3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.freechess.org/Help/HelpFiles/examine.html",
            "note_fr": null
          },
          {
            "code": "I4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.freechess.org/Help/HelpFiles/journal.html",
            "note_fr": null
          },
          {
            "code": "J1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.freechess.org",
            "note_fr": "Teaching Ladder bénévole, gratuit"
          },
          {
            "code": "J2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.freechess.org/Help/HelpFiles/mamer.html",
            "note_fr": null
          },
          {
            "code": "J3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.freechess.org",
            "note_fr": null
          },
          {
            "code": "K1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.freechess.club",
            "note_fr": "parties récupérables en PGN via les clients gratuits"
          },
          {
            "code": "K2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.freechess.org/Help/HelpFiles/register.html",
            "note_fr": null
          },
          {
            "code": "K3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.freechess.org/Help/HelpFiles/",
            "note_fr": "protocole telnet documenté, client GPL-3.0"
          }
        ]
      }
    },
    {
      "slug": "wintrchess",
      "name": "WintrChess",
      "url": "https://wintrchess.com",
      "kind": "platform",
      "type": {
        "en": "free game analyser",
        "fr": "analyseur gratuit de parties"
      },
      "price": {
        "en": "€0 (free, rule: free; no paid offer found, funded by AdSense and Ko-fi donations)",
        "fr": "0 € (gratuit, règle : gratuit ; aucune offre payante trouvée, financement AdSense et dons Ko-fi)"
      },
      "languages": 11,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 2.57,
      "unweighted_score": 2.65,
      "category_scores": {
        "A": 2.5,
        "B": 0,
        "C": 0,
        "D": 10,
        "E": 4.2,
        "F": 0,
        "G": 0,
        "H": 2.7,
        "I": 1.7,
        "J": 2.5,
        "K": 5.6
      },
      "scores": {
        "A": [
          3,
          2,
          0,
          0,
          1,
          0,
          0,
          0
        ],
        "B": [
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "C": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "D": [
          3,
          3,
          3,
          3
        ],
        "E": [
          0,
          0,
          3,
          2
        ],
        "F": [
          0,
          0,
          0,
          0,
          0
        ],
        "G": [
          0,
          0,
          0,
          0
        ],
        "H": [
          1,
          0,
          2,
          0,
          1
        ],
        "I": [
          1,
          0,
          0,
          1
        ],
        "J": [
          0,
          1,
          0,
          2
        ],
        "K": [
          2,
          0,
          3
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 2.55,
        "criteria": [
          {
            "code": "A1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://raw.githubusercontent.com/WintrCat/wintrchess/master/client/public/locales/en/analysis.json",
            "note_fr": "« Chess.com username… », « Lichess username… », « Upload PGN File » — service gratuit"
          },
          {
            "code": "A2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://raw.githubusercontent.com/WintrCat/wintrchess/master/readme.md",
            "note_fr": "« analyses Chess games with move classifications, for free »"
          },
          {
            "code": "A3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://raw.githubusercontent.com/WintrCat/wintrchess/master/client/public/locales/en/analysis.json",
            "note_fr": null
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C9",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://raw.githubusercontent.com/WintrCat/wintrchess/master/readme.md",
            "note_fr": "« analyses Chess games with move classifications, for free »"
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://wintrchess.com",
            "note_fr": "0 € ; /premium en 404"
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://wintrchess.com",
            "note_fr": "rien à acheter ; dons Ko-fi facultatifs"
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://raw.githubusercontent.com/WintrCat/wintrchess/master/client/public/locales/en/common.json",
            "note_fr": null
          },
          {
            "code": "E1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/wintrcat/wintrchess",
            "note_fr": "code source GPL-3.0"
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://wintrchess.com",
            "note_fr": null
          },
          {
            "code": "F1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://raw.githubusercontent.com/WintrCat/wintrchess/master/readme.md",
            "note_fr": null
          },
          {
            "code": "H2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://raw.githubusercontent.com/WintrCat/wintrchess/master/client/src/i18n/languages.ts",
            "note_fr": "11 langues dont le français"
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://wintrchess.com",
            "note_fr": null
          },
          {
            "code": "I1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://raw.githubusercontent.com/WintrCat/wintrchess/master/client/public/locales/en/analysis.json",
            "note_fr": null
          },
          {
            "code": "I2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I4",
            "status": "quota-real",
            "quota": "up to 50 games in your Game Archive",
            "source_url": "https://raw.githubusercontent.com/WintrCat/wintrchess/master/client/public/locales/en/analysis.json",
            "note_fr": "plafond de stockage (pas un quota journalier) ; s’applique à tous, aucune offre payante"
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://discord.com/api/v9/invites/XxtsAzPyCb",
            "note_fr": "Discord gratuit, 1 299 membres"
          },
          {
            "code": "J3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://raw.githubusercontent.com/WintrCat/wintrchess/master/readme.md",
            "note_fr": null
          },
          {
            "code": "K1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://raw.githubusercontent.com/WintrCat/wintrchess/master/client/public/locales/en/common.json",
            "note_fr": "« Copy PGN », « Copy FEN »"
          },
          {
            "code": "K2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "K3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/wintrcat/wintrchess",
            "note_fr": "GPL-3.0"
          }
        ]
      }
    },
    {
      "slug": "chessdriller",
      "name": "Chessdriller",
      "url": "https://chessdriller.org/",
      "kind": "platform",
      "type": {
        "en": "spaced repetition of openings from Lichess studies",
        "fr": "répétition espacée d’ouvertures sur études Lichess"
      },
      "price": {
        "en": "€0 (free, open source — chessdriller.org).",
        "fr": "0 € (gratuit, open source — chessdriller.org)."
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 2.54,
      "unweighted_score": 2.48,
      "category_scores": {
        "A": 0,
        "B": 2.2,
        "C": 0.7,
        "D": 10,
        "E": 5,
        "F": 0,
        "G": 0,
        "H": 1.3,
        "I": 0,
        "J": 2.5,
        "K": 5.6
      },
      "scores": {
        "A": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          2,
          2,
          0,
          0,
          0,
          0
        ],
        "C": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          2,
          0
        ],
        "D": [
          3,
          3,
          3,
          3
        ],
        "E": [
          0,
          0,
          3,
          3
        ],
        "F": [
          0,
          0,
          0,
          0,
          0
        ],
        "G": [
          0,
          0,
          0,
          0
        ],
        "H": [
          1,
          0,
          0,
          0,
          1
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          0,
          1,
          0,
          2
        ],
        "K": [
          2,
          0,
          3
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 2.54,
        "criteria": [
          {
            "code": "A1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessdriller.org/",
            "note_fr": "Service entièrement gratuit : « It's a free and libre alternative to the spaced-repetition features of Chessable… » ; répertoire via études Lichess, aucun quota."
          },
          {
            "code": "B2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessdriller.org/faq",
            "note_fr": "Drill en répétition espacée sans limite publiée ; la FAQ ne mentionne ni quota ni palier payant."
          },
          {
            "code": "B3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C8",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessdriller.org/faq",
            "note_fr": "Intervalles 10 min → 7 j décrits dans la FAQ ; aucune limite d'usage ni paywall (les intervalles sont l'algorithme, pas un quota)."
          },
          {
            "code": "C9",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessdriller.org/",
            "note_fr": "Informationnel — « free and libre », open source, aucun palier."
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessdriller.org/",
            "note_fr": "Informationnel — 0 €."
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessdriller.org/",
            "note_fr": "Informationnel — gratuit, connexion Lichess seulement."
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessdriller.org/",
            "note_fr": "Informationnel — aucun palier payant."
          },
          {
            "code": "E1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/gtim/chessdriller",
            "note_fr": "Informationnel — code source public, consultable sans payer."
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessdriller.org/",
            "note_fr": "Informationnel — discours factuel visible publiquement."
          },
          {
            "code": "F1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessdriller.org/",
            "note_fr": "Informationnel — web seul, accessible gratuitement."
          },
          {
            "code": "H2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessdriller.org/",
            "note_fr": "Informationnel — vaut en gratuit comme en payant (service 100 % gratuit)."
          },
          {
            "code": "I1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/gtim/chessdriller",
            "note_fr": "Informationnel — issues GitHub publiques, accès libre."
          },
          {
            "code": "J3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessdriller.org/",
            "note_fr": "Informationnel — aucune ludification ni mécanique payante ; tout est gratuit."
          },
          {
            "code": "K1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessdriller.org/faq",
            "note_fr": "Répertoire stocké dans les études Lichess de l'utilisateur — export PGN libre côté Lichess, sans paywall Chessdriller."
          },
          {
            "code": "K2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "K3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/gtim/chessdriller",
            "note_fr": "Informationnel — code public accessible sans payer."
          }
        ]
      }
    },
    {
      "slug": "nibbler",
      "name": "Nibbler",
      "url": "https://github.com/rooklift/nibbler",
      "kind": "engine",
      "type": {
        "en": "open-source Leela/Stockfish analysis GUI",
        "fr": "GUI d’analyse Leela/Stockfish open source"
      },
      "price": {
        "en": "free (GPL-3.0, github.com/rooklift/nibbler)",
        "fr": "gratuit (GPL-3.0, github.com/rooklift/nibbler)"
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": false,
      "overall_score": null,
      "unweighted_score": null,
      "category_scores": {
        "A": 1.3,
        "B": 1.1,
        "C": 0,
        "D": 10,
        "E": 4.2,
        "F": 0,
        "G": 1.7,
        "H": 2,
        "I": 1.7,
        "J": 2.5,
        "K": 3.3
      },
      "scores": {
        "A": [
          1,
          2,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          0,
          0,
          0,
          0,
          2,
          0
        ],
        "C": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "D": [
          3,
          3,
          3,
          3
        ],
        "E": [
          0,
          0,
          3,
          2
        ],
        "F": [
          0,
          0,
          0,
          0,
          0
        ],
        "G": [
          0,
          1,
          1,
          0
        ],
        "H": [
          0,
          0,
          0,
          0,
          3
        ],
        "I": [
          0,
          1,
          1,
          0
        ],
        "J": [
          0,
          1,
          0,
          2
        ],
        "K": [
          0,
          0,
          3
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": null
    },
    {
      "slug": "chess-coach-ai-chess-tutor-android",
      "name": "Chess Coach – AI Chess Tutor (Android)",
      "url": "https://play.google.com/store/apps/details?id=com.app.cheescoach",
      "kind": "platform",
      "type": {
        "en": "Android app: Stockfish + LLM coach",
        "fr": "app Android Stockfish + coach LLM"
      },
      "price": {
        "en": "Free with per-item credits $1.49–8.39 (Google Play), or \"Premium BYOK\" with your own API key. No annual subscription.",
        "fr": "Gratuit avec crédits à l’unité 1,49–8,39 $ (Google Play), ou « Premium BYOK » avec sa propre clé d’API. Pas d’abonnement annuel."
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 2.52,
      "unweighted_score": 2.38,
      "category_scores": {
        "A": 2.1,
        "B": 2.2,
        "C": 1.1,
        "D": 5,
        "E": 3.3,
        "F": 2,
        "G": 3.3,
        "H": 3.3,
        "I": 0,
        "J": 1.7,
        "K": 2.2
      },
      "scores": {
        "A": [
          1,
          2,
          0,
          0,
          2,
          0,
          0,
          0
        ],
        "B": [
          1,
          2,
          0,
          0,
          0,
          1
        ],
        "C": [
          0,
          1,
          1,
          0,
          0,
          0,
          1,
          0,
          0
        ],
        "D": [
          1,
          2,
          1,
          2
        ],
        "E": [
          0,
          0,
          2,
          2
        ],
        "F": [
          0,
          0,
          1,
          0,
          2
        ],
        "G": [
          2,
          1,
          1,
          0
        ],
        "H": [
          1,
          2,
          0,
          0,
          2
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          0,
          0,
          0,
          2
        ],
        "K": [
          0,
          1,
          1
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": null
    },
    {
      "slug": "ecole-apprendre-les-echecs",
      "name": "École Apprendre les Échecs",
      "url": "https://ecole.apprendre-les-echecs.com/",
      "kind": "platform",
      "type": {
        "en": "Free French-language online chess school",
        "fr": "École d’échecs en ligne francophone gratuite"
      },
      "price": {
        "en": "€27 (\"1560 exercices\" course, 6-month access, one-off payment); every other course free. Rule: shown price of the only paid offer.",
        "fr": "27 € (cours « 1560 exercices », accès 6 mois, paiement unique) ; tous les autres cours gratuits. Règle : prix affiché de la seule offre payante."
      },
      "languages": 2,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 2.52,
      "unweighted_score": 2.2,
      "category_scores": {
        "A": 0,
        "B": 1.1,
        "C": 1.9,
        "D": 9.2,
        "E": 2.5,
        "F": 4.7,
        "G": 0,
        "H": 2,
        "I": 0,
        "J": 1.7,
        "K": 1.1
      },
      "scores": {
        "A": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          0,
          0,
          0,
          0,
          0,
          2
        ],
        "C": [
          0,
          1,
          1,
          1,
          0,
          1,
          0,
          0,
          1
        ],
        "D": [
          3,
          3,
          2,
          3
        ],
        "E": [
          0,
          0,
          1,
          2
        ],
        "F": [
          2,
          1,
          2,
          1,
          1
        ],
        "G": [
          0,
          0,
          0,
          0
        ],
        "H": [
          1,
          0,
          1,
          0,
          1
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          0,
          1,
          0,
          1
        ],
        "K": [
          0,
          1,
          0
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 2.46,
        "criteria": [
          {
            "code": "A1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B6",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://ecole.apprendre-les-echecs.com/gambit-dame/",
            "note_fr": "Article public en accès libre, sans compte ni paiement."
          },
          {
            "code": "C1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C2",
            "status": "paid",
            "quota": null,
            "source_url": "https://ecole.apprendre-les-echecs.com/cours-echecs/",
            "note_fr": "La banque d'exercices = le cours « 1560 exercices pour mieux jouer aux échecs », seul cours payant (27 €) ; tous les autres cours sont étiquetés « Gratuit »."
          },
          {
            "code": "C3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://ecole.apprendre-les-echecs.com/cours-echecs/",
            "note_fr": "« Apprendre à jouer les finales » étiqueté « Gratuit » ; inscription « rapide et gratuit » (accueil)."
          },
          {
            "code": "C4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://ecole.apprendre-les-echecs.com/cours-echecs/",
            "note_fr": "« L'art de jouer les pions » étiqueté « Gratuit »."
          },
          {
            "code": "C5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C6",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://ecole.apprendre-les-echecs.com/cours-echecs/",
            "note_fr": "« Mieux réfléchir pour faire moins d'erreurs » sans prix affiché ; le seul cours payant du catalogue est « 1560 exercices » (27 €) — tout le reste est gratuit."
          },
          {
            "code": "C7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C9",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://ecole.apprendre-les-echecs.com/",
            "note_fr": "« Progresser aux échecs » listé parmi les cours gratuits de l'accueil."
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://ecole.apprendre-les-echecs.com/cours-echecs/",
            "note_fr": "Informationnel — catalogue avec étiquettes « Gratuit » et prix visibles publiquement ; inscription « C'est rapide et gratuit ! » (accueil)."
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://ecole.apprendre-les-echecs.com/courses/1440-exercices-pour-mieux-jouer-aux-echecs/",
            "note_fr": "Informationnel — 27 € affiché publiquement."
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://ecole.apprendre-les-echecs.com/courses/1440-exercices-pour-mieux-jouer-aux-echecs/",
            "note_fr": "Informationnel — prix et remboursement affichés publiquement."
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://ecole.apprendre-les-echecs.com/cours-echecs/",
            "note_fr": "Informationnel — un seul produit payant visible au catalogue."
          },
          {
            "code": "E1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://ecole.apprendre-les-echecs.com/apprendre/",
            "note_fr": "Informationnel — description des cours lisible publiquement."
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://ecole.apprendre-les-echecs.com/",
            "note_fr": "Informationnel — discours public."
          },
          {
            "code": "F1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://ecole.apprendre-les-echecs.com/cours-echecs/",
            "note_fr": "Étiquettes Débutant/Intermédiaire sur des cours majoritairement gratuits ; catalogue public."
          },
          {
            "code": "F2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://ecole.apprendre-les-echecs.com/a-propos/",
            "note_fr": "Informationnel — auteur présenté publiquement."
          },
          {
            "code": "F3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://ecole.apprendre-les-echecs.com/apprendre/",
            "note_fr": "« pages en ligne, fichiers PDF, vidéos » — formats présents dans les cours gratuits (seuls les PDF « 1560 exercices » sont payants)."
          },
          {
            "code": "F4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://ecole.apprendre-les-echecs.com/courses/progresser-aux-echecs/",
            "note_fr": "Cours de progression gratuit, accessible avec le compte gratuit."
          },
          {
            "code": "F5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://ecole.apprendre-les-echecs.com/a-propos/",
            "note_fr": "Informationnel — vaut en gratuit comme en payant."
          },
          {
            "code": "G1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://ecole.apprendre-les-echecs.com/",
            "note_fr": "Informationnel — site web seul, accès public."
          },
          {
            "code": "H2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://ecole.apprendre-les-echecs.com/gambit-dame/",
            "note_fr": "Informationnel (langues) — interface française constatée, valable pour tous."
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://ecole.apprendre-les-echecs.com/",
            "note_fr": "Informationnel — vaut en gratuit comme en payant."
          },
          {
            "code": "I1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://ecole.apprendre-les-echecs.com/",
            "note_fr": "« La cafétéria » réservée aux inscrits, mais l'inscription est « rapide et gratuit » — compte gratuit requis = gratuit."
          },
          {
            "code": "J3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://ecole.apprendre-les-echecs.com/eleves/",
            "note_fr": "Classement des élèves accessible avec le compte gratuit, sans paiement."
          },
          {
            "code": "K1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "K2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://ecole.apprendre-les-echecs.com/a-propos/",
            "note_fr": "Informationnel (politique) — vaut en gratuit comme en payant ; aucune politique de confidentialité trouvée sur les pages publiques."
          },
          {
            "code": "K3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          }
        ]
      }
    },
    {
      "slug": "chesskit",
      "name": "Chesskit",
      "url": "https://chesskit.org/",
      "kind": "platform",
      "type": {
        "en": "open-source Stockfish web analyser",
        "fr": "analyseur web open source Stockfish"
      },
      "price": {
        "en": "Free (AGPL-3.0) — rule: free.",
        "fr": "Gratuit (AGPL-3.0) — règle : gratuit."
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 2.51,
      "unweighted_score": 2.37,
      "category_scores": {
        "A": 2.1,
        "B": 0,
        "C": 0.4,
        "D": 10,
        "E": 4.2,
        "F": 0.7,
        "G": 0.8,
        "H": 1.3,
        "I": 0.8,
        "J": 2.5,
        "K": 3.3
      },
      "scores": {
        "A": [
          2,
          2,
          0,
          0,
          1,
          0,
          0,
          0
        ],
        "B": [
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "C": [
          0,
          1,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "D": [
          3,
          3,
          3,
          3
        ],
        "E": [
          0,
          0,
          3,
          2
        ],
        "F": [
          0,
          0,
          0,
          0,
          1
        ],
        "G": [
          0,
          1,
          0,
          0
        ],
        "H": [
          1,
          0,
          0,
          0,
          1
        ],
        "I": [
          0,
          0,
          0,
          1
        ],
        "J": [
          0,
          1,
          0,
          2
        ],
        "K": [
          0,
          0,
          3
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 2.51,
        "criteria": [
          {
            "code": "A1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/GuillaumeSD/Chesskit",
            "note_fr": "« play, view, analyze and review your chess games for free on any device with Stockfish » — AGPL-3.0, aucun paywall ni quota mentionné."
          },
          {
            "code": "A2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/GuillaumeSD/Chesskit",
            "note_fr": "Analyse Stockfish locale (navigateur), gratuite et sans limite publiée."
          },
          {
            "code": "A3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/GuillaumeSD/Chesskit",
            "note_fr": "« Moves classification (Brilliant, Great, Good, Mistake, Blunder, ...) » — incluse dans l'app gratuite."
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/GuillaumeSD/Chesskit",
            "note_fr": "« Puzzles support » — app entièrement gratuite (AGPL-3.0), aucun quota."
          },
          {
            "code": "C3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C9",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/GuillaumeSD/Chesskit",
            "note_fr": "Informationnel — « for free », open source, aucun palier."
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesskit.org/",
            "note_fr": "Informationnel — gratuit."
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesskit.org/",
            "note_fr": "Informationnel — gratuit, sans abonnement."
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/GuillaumeSD/Chesskit",
            "note_fr": "Informationnel — AGPL-3.0, aucun palier payant."
          },
          {
            "code": "E1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/GuillaumeSD/Chesskit",
            "note_fr": "Informationnel — code source AGPL-3.0 public."
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/GuillaumeSD/Chesskit",
            "note_fr": "Informationnel — description factuelle publique."
          },
          {
            "code": "F1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://api.github.com/repos/GuillaumeSD/Chesskit",
            "note_fr": "Informationnel — fréquence de mise à jour lisible publiquement sur le dépôt."
          },
          {
            "code": "G1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/GuillaumeSD/Chesskit",
            "note_fr": "« Play against Stockfish at any elo » — gratuit, moteur local, sans quota."
          },
          {
            "code": "G3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/GuillaumeSD/Chesskit",
            "note_fr": "Informationnel — site web « on any device », gratuit."
          },
          {
            "code": "H2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/GuillaumeSD/Chesskit",
            "note_fr": "Informationnel — stockage navigateur ; vaut en gratuit comme en payant."
          },
          {
            "code": "I1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/GuillaumeSD/Chesskit",
            "note_fr": "« Store your games in your browser database » — fonction de l'app gratuite, aucun quota publié."
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/GuillaumeSD/Chesskit",
            "note_fr": "Informationnel — Discord public, accès libre."
          },
          {
            "code": "J3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/GuillaumeSD/Chesskit",
            "note_fr": "Informationnel — aucune ludification ni mécanique payante ; app gratuite."
          },
          {
            "code": "K1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "K2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "K3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/GuillaumeSD/Chesskit",
            "note_fr": "Informationnel — code source ouvert public."
          }
        ]
      }
    },
    {
      "slug": "chessmonitor-plus-openingtree",
      "name": "ChessMonitor + OpeningTree",
      "url": "https://www.chessmonitor.com/",
      "kind": "platform",
      "type": {
        "en": "stats and explorer for your own games",
        "fr": "statistiques et explorateur de ses parties"
      },
      "price": {
        "en": "Pro €538.80/yr (€59.90/mo); Plus €70.80/yr (€7.90/mo); OpeningTree free — read by hand on /pricing, 2026-09-01.",
        "fr": "Pro 538,80 €/an (59,90 €/mois) ; Plus 70,80 €/an (7,90 €/mois) ; OpeningTree gratuit — relevé à la main sur /pricing le 01/09/2026."
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 2.27,
      "unweighted_score": 2.58,
      "category_scores": {
        "A": 2.9,
        "B": 2.8,
        "C": 0,
        "D": 3.3,
        "E": 4.2,
        "F": 0,
        "G": 0,
        "H": 2.7,
        "I": 3.3,
        "J": 2.5,
        "K": 6.7
      },
      "scores": {
        "A": [
          3,
          1,
          1,
          0,
          0,
          0,
          1,
          1
        ],
        "B": [
          0,
          0,
          1,
          0,
          3,
          1
        ],
        "C": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "D": [
          2,
          0,
          0,
          2
        ],
        "E": [
          0,
          0,
          3,
          2
        ],
        "F": [
          0,
          0,
          0,
          0,
          0
        ],
        "G": [
          0,
          0,
          0,
          0
        ],
        "H": [
          3,
          0,
          0,
          0,
          1
        ],
        "I": [
          2,
          0,
          0,
          2
        ],
        "J": [
          0,
          0,
          1,
          2
        ],
        "K": [
          1,
          2,
          3
        ]
      },
      "evidence_urls": {
        "A": [
          "https://www.chessmonitor.com/",
          "https://apps.apple.com/us/app/chessmonitor/id6755627535",
          "https://www.chessmonitor.com/",
          "https://www.chessmonitor.com/",
          "https://www.chessmonitor.com/",
          "https://www.chessmonitor.com/",
          "https://www.chessmonitor.com/",
          "https://www.chessmonitor.com/"
        ],
        "B": [
          "https://raw.githubusercontent.com/openingtree/openingtree/master/README.md",
          "https://www.chessmonitor.com/",
          "https://www.chessmonitor.com/pricing",
          "https://www.chessmonitor.com/",
          "https://www.chessmonitor.com/",
          "https://www.chessmonitor.com/"
        ],
        "C": [
          "https://www.chessmonitor.com/",
          "https://www.chessmonitor.com/",
          "https://www.chessmonitor.com/",
          "https://www.chessmonitor.com/",
          "https://www.chessmonitor.com/",
          "https://www.chessmonitor.com/",
          "https://www.chessmonitor.com/",
          "https://www.chessmonitor.com/",
          "https://www.chessmonitor.com/"
        ],
        "D": [
          "https://www.chessmonitor.com/pricing",
          "https://www.chessmonitor.com/pricing",
          "https://www.chessmonitor.com/pricing",
          "https://www.chessmonitor.com/pricing"
        ],
        "E": [
          "https://www.chessmonitor.com/",
          "https://www.chessmonitor.com/",
          "https://github.com/openingtree/openingtree",
          "https://www.chessmonitor.com/"
        ],
        "F": [
          "https://www.chessmonitor.com/",
          "https://www.chessmonitor.com/",
          "https://www.chessmonitor.com/",
          "https://www.chessmonitor.com/",
          "https://www.chessmonitor.com/"
        ],
        "G": [
          "https://www.chessmonitor.com/",
          "https://www.chessmonitor.com/",
          "https://www.chessmonitor.com/",
          "https://www.chessmonitor.com/"
        ],
        "H": [
          "https://www.chessmonitor.com/",
          "https://apps.apple.com/us/app/chessmonitor/id6755627535",
          "https://apps.apple.com/us/app/chessmonitor/id6755627535",
          "https://www.chessmonitor.com/",
          "https://www.chessmonitor.com/"
        ],
        "I": [
          "https://www.chessmonitor.com/pricing",
          "https://www.chessmonitor.com/",
          "https://www.chessmonitor.com/pricing",
          "https://www.chessmonitor.com/pricing"
        ],
        "J": [
          "https://www.chessmonitor.com/",
          "https://www.chessmonitor.com/pricing",
          "https://www.chessmonitor.com/pricing",
          "https://www.chessmonitor.com/"
        ],
        "K": [
          "https://www.chessmonitor.com/privacy",
          "https://www.chessmonitor.com/privacy",
          "https://github.com/openingtree/openingtree"
        ]
      },
      "sources": [
        "https://www.chessmonitor.com/",
        "https://www.chessmonitor.com/about",
        "https://www.chessmonitor.com/legal",
        "https://www.chessmonitor.com/pricing",
        "https://www.chessmonitor.com/privacy",
        "https://www.chessmonitor.com/blog",
        "https://www.chessmonitor.com/changelog",
        "https://www.chessmonitor.com/blog/2026-ultra-database",
        "https://www.chessmonitor.com/blog/2026-chessmonitor-mobile-app",
        "https://www.chessmonitor.com/blog/2025-anish-giri-joins-chessmonitor",
        "https://www.chessmonitor.com/blog/2024-chessmonitor-receives-startup-grant",
        "https://apps.apple.com/us/app/chessmonitor/id6755627535",
        "https://play.google.com/store/apps/details?id=com.chessmonitor.app",
        "https://www.openingtree.com",
        "https://github.com/openingtree/openingtree",
        "https://github.com/openingtree/openingtree/releases",
        "https://github.com/openingtree/openingtree/commits/master",
        "https://github.com/vjuneja",
        "https://raw.githubusercontent.com/openingtree/openingtree/master/README.md"
      ],
      "review_url": "https://www.chesspivot.com/en/reviews/chessmonitor-plus-openingtree",
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 2.17,
        "criteria": [
          {
            "code": "A1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.openingtree.com/",
            "note_fr": "OpeningTree gratuit sans limite (« all your chess games from chess.com, lichess, grandmaster games or custom pgn ») ; ChessMonitor Basic gratuit : « Connect one Chess.com account », « Connect one Lichess account », « Single, limited custom database » (https://www.chessmonitor.com/pricing)"
          },
          {
            "code": "A2",
            "status": "undocumented",
            "quota": null,
            "source_url": null,
            "note_fr": "Stockfish 18 annoncé sur la fiche App Store (https://apps.apple.com/us/app/chessmonitor/id6755627535) mais ni /pricing ni la fiche ne disent quel palier y donne accès (achats intégrés 7,99 $/mois — 79,99 $/an)"
          },
          {
            "code": "A3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessmonitor.com/pricing",
            "note_fr": "« Opening Statistics » et « Win-rate Statistics » inclus dans Basic (« 100% free »)"
          },
          {
            "code": "A4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A7",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessmonitor.com/pricing",
            "note_fr": "suivi de progression = statistiques Basic gratuites ; aucune fonction de suivi listée comme payante"
          },
          {
            "code": "A8",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessmonitor.com/",
            "note_fr": "« Estimate your FIDE Elo rating » mis en avant sans condition d’abonnement ; absent des fonctions payantes de /pricing"
          },
          {
            "code": "B1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessmonitor.com/pricing",
            "note_fr": "« Opening Statistics » dans Basic ; OpeningTree gratuit (statistiques par coup)"
          },
          {
            "code": "B4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessmonitor.com/pricing",
            "note_fr": "« Move Explorer » et « Opening Statistics » dans Basic ; « Ultra Database Access » (10 M de parties OTB) réservé à Plus"
          },
          {
            "code": "B6",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessmonitor.com/pricing",
            "note_fr": "noms et statistiques d’ouverture inclus dans Basic"
          },
          {
            "code": "C1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C9",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessmonitor.com/pricing",
            "note_fr": "critère informationnel"
          },
          {
            "code": "D2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "D3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessmonitor.com/pricing",
            "note_fr": "critère informationnel"
          },
          {
            "code": "E1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/openingtree/openingtree",
            "note_fr": "OpeningTree open source (GPL-3.0) — critère informationnel"
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessmonitor.com/",
            "note_fr": "critère informationnel"
          },
          {
            "code": "F1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessmonitor.com/",
            "note_fr": "critère informationnel ; apps iOS/Android gratuites au téléchargement"
          },
          {
            "code": "H2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessmonitor.com/",
            "note_fr": "critère informationnel"
          },
          {
            "code": "I1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.openingtree.com/",
            "note_fr": "OpeningTree gratuit : « Prepare against your opponents by analyzing at their games and see which openings work » ; sur ChessMonitor, « View any Chess.com/Lichess player » et « Full Opponent View » sont réservés à Plus (https://www.chessmonitor.com/pricing)"
          },
          {
            "code": "I2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessmonitor.com/pricing",
            "note_fr": "« Basic Filters » inclus dans Basic ; « Advanced Filters » réservés à Plus"
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J3",
            "status": "paid",
            "quota": null,
            "source_url": "https://www.chessmonitor.com/pricing",
            "note_fr": "« Up to 5 Chess.com accounts » (Plus) / « Up to 10 » (Professional) : le multi-comptes est réservé aux paliers payants ; Basic = un compte par plateforme"
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessmonitor.com/",
            "note_fr": "critère informationnel (absence de mécaniques d’engagement)"
          },
          {
            "code": "K1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessmonitor.com/privacy",
            "note_fr": "export RGPD gratuit : « machine-readable format to transfer it to another service if you wish » ; « Bulk Export PGNs » réservé à Plus (https://www.chessmonitor.com/pricing)"
          },
          {
            "code": "K2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessmonitor.com/privacy",
            "note_fr": "critère informationnel ; NB « No ads (for ChessMonitor) » réservé à Plus — le gratuit affiche des publicités"
          },
          {
            "code": "K3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/openingtree/openingtree",
            "note_fr": "critère informationnel — dépôt public GPL-3.0"
          }
        ]
      }
    },
    {
      "slug": "chessgames-com",
      "name": "Chessgames.com",
      "url": "https://www.chessgames.com/",
      "kind": "platform",
      "type": {
        "en": "community historical game database",
        "fr": "base de parties historique communautaire"
      },
      "price": {
        "en": "$39/yr ≈ €36 (annual price shown on the home page: \"premium membership fee will increase to $39 per year effective July 1, 2023\"; $1 ≈ €0.92)",
        "fr": "39 $/an ≈ 36 € (annuel affiché sur la page d’accueil : « premium membership fee will increase to $39 per year effective July 1, 2023 » ; 1 $ ≈ 0,92 €)"
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 2.49,
      "unweighted_score": 2.52,
      "category_scores": {
        "A": 0,
        "B": 2.8,
        "C": 1.5,
        "D": 7.5,
        "E": 3.3,
        "F": 2,
        "G": 0,
        "H": 2,
        "I": 4.2,
        "J": 3.3,
        "K": 1.1
      },
      "scores": {
        "A": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          0,
          0,
          0,
          2,
          2,
          1
        ],
        "C": [
          0,
          1,
          1,
          2,
          0,
          0,
          0,
          0,
          0
        ],
        "D": [
          3,
          2,
          1,
          3
        ],
        "E": [
          0,
          1,
          1,
          2
        ],
        "F": [
          0,
          0,
          0,
          0,
          3
        ],
        "G": [
          0,
          0,
          0,
          0
        ],
        "H": [
          1,
          1,
          0,
          0,
          1
        ],
        "I": [
          2,
          3,
          0,
          0
        ],
        "J": [
          0,
          2,
          0,
          2
        ],
        "K": [
          0,
          1,
          0
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 2.1,
        "criteria": [
          {
            "code": "A1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B4",
            "status": "quota-symbolic",
            "quota": "« Your premium membership allows you access to over a dozen special functions… This includes the Opening Explorer » ; « the Opening Explorer will be fully functional » (une fois premium)",
            "source_url": "https://www.chessgames.com/premiumhelp.html",
            "note_fr": "Le sourçage des lignes passe par l'Opening Explorer, listé comme fonction premium ; « fully functional » en premium implique une version gratuite limitée, sans nombre publié → le plus défavorable."
          },
          {
            "code": "B5",
            "status": "quota-symbolic",
            "quota": "« This includes the Opening Explorer » (bénéfice premium) ; « the Opening Explorer will be fully functional » (une fois premium)",
            "source_url": "https://www.chessgames.com/premiumhelp.html",
            "note_fr": "Explorateur listé parmi les fonctions premium ; version gratuite limitée sans quota publié."
          },
          {
            "code": "B6",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessgames.com/",
            "note_fr": "« Opening of the Day » affiché sur la page d'accueil publique, sans compte."
          },
          {
            "code": "C1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C2",
            "status": "quota-symbolic",
            "quota": "« our daily homepage puzzle » ; « How do I see previous homepage Puzzles of the Day? On the Membership Page you will find a link to the Tactical Exercise Archive »",
            "source_url": "https://www.chessgames.com/premiumhelp.html",
            "note_fr": "Un puzzle par jour en accès public (< 5/jour) ; l'archive des puzzles précédents est sur la Membership Page (premium)."
          },
          {
            "code": "C3",
            "status": "paid",
            "quota": null,
            "source_url": "https://www.chessgames.com/premiumhelp.html",
            "note_fr": "Le filtre finales passe par Guess-the-Move : « NOTE: Like all premium features, you can access Guess-the-Move from your… » — réservé premium."
          },
          {
            "code": "C4",
            "status": "paid",
            "quota": null,
            "source_url": "https://www.chessgames.com/premiumhelp.html",
            "note_fr": "« This includes… our chess-training tool Guess-the-Move » — listé parmi les fonctions premium (« Like all premium features »)."
          },
          {
            "code": "C5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C9",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessgames.com/chesshelp.html",
            "note_fr": "Informationnel — « it is 100% free to register an account… A free Chessgames account will allow you to kibitz, create game collections, participate in special events »."
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessgames.com/premiumhelp.html",
            "note_fr": "Informationnel — « Chessgames Premium Memberships cost $US 39.00 per year » (page publique)."
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessgames.com/premiumhelp.html",
            "note_fr": "Informationnel — prix, rate card et modalités PayPal/chèque affichés publiquement."
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessgames.com/premiumhelp.html",
            "note_fr": "Informationnel — un palier annuel 39 $ (+ Lifetime 485 $)."
          },
          {
            "code": "E1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://en.wikipedia.org/wiki/Chessgames.com",
            "note_fr": "Informationnel — corrections communautaires documentées publiquement."
          },
          {
            "code": "E3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessgames.com/chessabout.html",
            "note_fr": "Informationnel — description publique du fonctionnement."
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessgames.com/chessabout.html",
            "note_fr": "Informationnel — discours public."
          },
          {
            "code": "F1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessgames.com/",
            "note_fr": "Game/Opening/Player of the Day sur la page d'accueil publique, sans compte."
          },
          {
            "code": "G1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessgames.com/",
            "note_fr": "Informationnel — web seul."
          },
          {
            "code": "H2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://en.wikipedia.org/wiki/Chessgames.com",
            "note_fr": "Informationnel — avis tiers publics."
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessgames.com/",
            "note_fr": "Informationnel — vaut en gratuit comme en payant."
          },
          {
            "code": "H3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessgames.com/chessabout.html",
            "note_fr": "Pages joueur publiques (« Overall record », « Most played openings ») consultables gratuitement (« peruse our collection of games for free ») ; en revanche le Repertoire Explorer est « a feature of the Opening Explorer » (premium)."
          },
          {
            "code": "I2",
            "status": "quota-real",
            "quota": "« Free accounts are limited to a total of 8 game collections, and no collection may have more than 101 games. These limits are greatly expanded for premium Chessgames members. »",
            "source_url": "https://www.chessgames.com/chesshelp.html",
            "note_fr": "Kibitzing/annotation illimités avec compte gratuit (« A free Chessgames account will allow you to kibitz, create game collections ») ; les collections sont plafonnées à 8 × 101 parties — usage réel quotidien possible."
          },
          {
            "code": "I3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessgames.com/chesshelp.html",
            "note_fr": "Kibitzing et forums accessibles avec le compte gratuit (« 100% free to register »)."
          },
          {
            "code": "J3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessgames.com/chesshelp.html",
            "note_fr": "Informationnel — « The ChessBookie Game is a free game » ; aucune mécanique payante."
          },
          {
            "code": "K1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "K2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessgames.com/chessprivacy.html",
            "note_fr": "Informationnel (politique) — vaut en gratuit comme en payant."
          },
          {
            "code": "K3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          }
        ]
      }
    },
    {
      "slug": "circlechess",
      "name": "CircleChess",
      "url": "https://circlechess.com/",
      "kind": "platform",
      "type": {
        "en": "Indian tournament + academy platform",
        "fr": "plateforme indienne tournois + académie"
      },
      "price": {
        "en": "$69.99/yr \"Aspiring Champions Yearly Plan\" ≈ €64 (https://apps.apple.com/us/app/circlechess-play-chess-daily/id6743388978); rule: annual price shown; tournament entry $0.99",
        "fr": "69,99 $/an « Aspiring Champions Yearly Plan » ≈ 64 € (https://apps.apple.com/us/app/circlechess-play-chess-daily/id6743388978) ; règle : annuel affiché ; entrée de tournoi 0,99 $"
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 2.49,
      "unweighted_score": 2.55,
      "category_scores": {
        "A": 2.9,
        "B": 0,
        "C": 1.1,
        "D": 5.8,
        "E": 1.7,
        "F": 5.3,
        "G": 2.5,
        "H": 2,
        "I": 2.5,
        "J": 4.2,
        "K": 0
      },
      "scores": {
        "A": [
          0,
          2,
          1,
          0,
          2,
          0,
          1,
          1
        ],
        "B": [
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "C": [
          0,
          1,
          0,
          1,
          0,
          0,
          0,
          0,
          1
        ],
        "D": [
          2,
          2,
          1,
          2
        ],
        "E": [
          1,
          0,
          0,
          1
        ],
        "F": [
          2,
          2,
          1,
          1,
          2
        ],
        "G": [
          1,
          0,
          0,
          2
        ],
        "H": [
          2,
          0,
          0,
          0,
          1
        ],
        "I": [
          0,
          0,
          3,
          0
        ],
        "J": [
          2,
          2,
          0,
          1
        ],
        "K": [
          0,
          0,
          0
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 2.06,
        "criteria": [
          {
            "code": "A1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/circlechess-play-chess-daily/id6743388978",
            "note_fr": "« get instant analysis on every game you play » ; la section FREE AND PAID n'inscrit au payant que « Selected special tournaments and the full course library » — l'analyse n'y figure pas."
          },
          {
            "code": "A3",
            "status": "undocumented",
            "quota": null,
            "source_url": null,
            "note_fr": "Le « ChessIQ Report » (circlechess.com) n'apparaît ni dans la liste gratuite ni dans la liste payante des pages publiques — statut non établissable."
          },
          {
            "code": "A4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/circlechess-play-chess-daily/id6743388978",
            "note_fr": "« where it went wrong, what the stronger move was, and why it was stronger » — fait partie de l'analyse instantanée, hors de la liste payante (« Selected special tournaments and the full course library are paid »)."
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A7",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/circlechess-play-chess-daily/id6743388978",
            "note_fr": "Parties classées blitz/rapide/classique : « online play … [is] free » — la courbe de classement en découle."
          },
          {
            "code": "A8",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/circlechess-play-chess-daily/id6743388978",
            "note_fr": "« climb the weekly leaderboard » — lié aux tournois quotidiens gratuits ; « Daily tournaments, online play, puzzles, clubs and streaks are free »."
          },
          {
            "code": "B1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/circlechess-play-chess-daily/id6743388978",
            "note_fr": "« Daily tournaments, online play, puzzles, clubs and streaks are free » — puzzles gratuits sans quota publié."
          },
          {
            "code": "C3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C4",
            "status": "paid",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/circlechess-play-chess-daily/id6743388978",
            "note_fr": "Les cours « middlegame plans » relèvent de la bibliothèque de cours : « Selected special tournaments and the full course library are paid »."
          },
          {
            "code": "C5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C9",
            "status": "paid",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/circlechess-play-chess-daily/id6743388978",
            "note_fr": "« Structured courses from beginner to advanced » = bibliothèque de cours : « the full course library are paid »."
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/circlechess-play-chess-daily/id6743388978",
            "note_fr": "Informationnel — section FREE AND PAID publiée sur la fiche store."
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/circlechess-play-chess-daily/id6743388978",
            "note_fr": "Informationnel — « Aspiring Champions Yearly Plan $69.99 » affiché dans les achats intégrés."
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/circlechess-play-chess-daily/id6743388978",
            "note_fr": "Informationnel — prix listés sur la fiche store publique."
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/circlechess-play-chess-daily/id6743388978",
            "note_fr": "Informationnel — deux paliers (Aspiring Learners 49,99 $/an, Aspiring Champions 69,99 $/an) + entrée de tournoi 0,99 $."
          },
          {
            "code": "E1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://circlechess.com/about",
            "note_fr": "Informationnel — témoignage public."
          },
          {
            "code": "E2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://circlechess.com/",
            "note_fr": "Informationnel — discours marketing public."
          },
          {
            "code": "F1",
            "status": "paid",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/circlechess-play-chess-daily/id6743388978",
            "note_fr": "Cours « from beginner to advanced » = bibliothèque de cours payante (« the full course library are paid »)."
          },
          {
            "code": "F2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/circlechess-play-chess-daily/id6743388978",
            "note_fr": "Informationnel — « Our Chief Chess Officer is GM Vishnu Prasanna » publié sur la fiche."
          },
          {
            "code": "F3",
            "status": "paid",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/circlechess-play-chess-daily/id6743388978",
            "note_fr": "Les formats concernent les cours, réservés à l'abonnement (« the full course library are paid »)."
          },
          {
            "code": "F4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://circlechess.com/",
            "note_fr": "« Beginners to Masters journey » — présentation publique sur le site."
          },
          {
            "code": "F5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/circlechess-play-chess-daily/id6743388978",
            "note_fr": "Informationnel — version 3.0.1 du 18/08/2026 sur la fiche store."
          },
          {
            "code": "G1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/circlechess-play-chess-daily/id6743388978",
            "note_fr": "« Daily tournaments, online play, puzzles, clubs and streaks are free » — parties classées gratuites."
          },
          {
            "code": "G2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G4",
            "status": "quota-real",
            "quota": "« TWO FREE TOURNAMENTS, EVERY DAY … Free entry to both, every day of the week. » ; « Selected special tournaments … are paid »",
            "source_url": "https://apps.apple.com/us/app/circlechess-play-chess-daily/id6743388978",
            "note_fr": "Deux tournois gratuits chaque jour (arène 19 h + Puzzle Battle 21 h) — usage quotidien réel ; certains tournois spéciaux payants (entrée 0,99 $)."
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://circlechess.com/",
            "note_fr": "Informationnel — web + iOS."
          },
          {
            "code": "H2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/circlechess-play-chess-daily/id6743388978",
            "note_fr": "Informationnel — vaut en gratuit comme en payant."
          },
          {
            "code": "I1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/circlechess-play-chess-daily/id6743388978",
            "note_fr": "« You can also upload your over-the-board scoresheets and get the same analysis » — hors de la liste payante (« Selected special tournaments and the full course library are paid »)."
          },
          {
            "code": "I4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J1",
            "status": "undocumented",
            "quota": null,
            "source_url": null,
            "note_fr": "« Live Chess Classroom » et académie Caissa présentés sur circlechess.com sans aucun prix ni mention gratuit/payant — statut non établissable."
          },
          {
            "code": "J2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/circlechess-play-chess-daily/id6743388978",
            "note_fr": "« clubs … are free » (« Join a club, play for your team, and compete on club leaderboards »)."
          },
          {
            "code": "J3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/circlechess-play-chess-daily/id6743388978",
            "note_fr": "« streaks are free » ; leaderboard hebdomadaire gratuit."
          },
          {
            "code": "K1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "K2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "K3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          }
        ]
      }
    },
    {
      "slug": "darksquares",
      "name": "DarkSquares",
      "url": "https://darksquares.net/",
      "kind": "platform",
      "type": {
        "en": "visualisation and blindfold training",
        "fr": "entraînement visualisation et jeu aveugle"
      },
      "price": {
        "en": "$49 (one-off Pro Lifetime purchase, shown on darksquares.net/pricing) ≈ €45.08; levels 1-3 free",
        "fr": "49 $ (achat unique Pro Lifetime, affiché sur darksquares.net/pricing) ≈ 45,08 € ; gratuit niveaux 1-3"
      },
      "languages": 2,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 2.47,
      "unweighted_score": 2.63,
      "category_scores": {
        "A": 0,
        "B": 0,
        "C": 3,
        "D": 7.5,
        "E": 2.5,
        "F": 4,
        "G": 0.8,
        "H": 5.3,
        "I": 0,
        "J": 2.5,
        "K": 3.3
      },
      "scores": {
        "A": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "C": [
          0,
          1,
          1,
          0,
          0,
          3,
          1,
          0,
          2
        ],
        "D": [
          2,
          2,
          2,
          3
        ],
        "E": [
          0,
          0,
          1,
          2
        ],
        "F": [
          0,
          1,
          1,
          1,
          3
        ],
        "G": [
          0,
          1,
          0,
          0
        ],
        "H": [
          3,
          1,
          1,
          1,
          2
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          0,
          0,
          1,
          2
        ],
        "K": [
          1,
          2,
          0
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 2.34,
        "criteria": [
          {
            "code": "A1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C2",
            "status": "paid",
            "quota": null,
            "source_url": "https://darksquares.net/pricing",
            "note_fr": "« intermediate and expert tactics » listés dans le palier Pro Lifetime (49 $) — absents du gratuit."
          },
          {
            "code": "C3",
            "status": "paid",
            "quota": null,
            "source_url": "https://darksquares.net/pricing",
            "note_fr": "« endgame training » listé dans le palier Pro — absent du gratuit."
          },
          {
            "code": "C4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C6",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://darksquares.net/pricing",
            "note_fr": "Gratuit = exercices illimités (« unlimited exercises ») aux niveaux 1-3 avec les modes de visibilité de l'échiquier ; les niveaux 4-7 sont réservés au Pro (« all 7 training levels »)."
          },
          {
            "code": "C7",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://darksquares.net/pricing",
            "note_fr": "Niveaux progressifs utilisables sans quota en gratuit (niveaux 1-3) ; niveaux 4-7 en Pro."
          },
          {
            "code": "C8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C9",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://darksquares.net/pricing",
            "note_fr": "Parcours et défis quotidiens praticables sans quota en gratuit sur les niveaux 1-3 ; la suite du parcours (niveaux 4-7) est Pro."
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://darksquares.net/pricing",
            "note_fr": "Informationnel — page tarifs publique détaillant Free vs Pro."
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://darksquares.net/pricing",
            "note_fr": "Informationnel — 49 $ achat unique affiché."
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://darksquares.net/pricing",
            "note_fr": "Informationnel — prix, achat unique et rétractation UE 14 jours affichés."
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://darksquares.net/pricing",
            "note_fr": "Informationnel — un seul palier Pro Lifetime."
          },
          {
            "code": "E1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/blindfold-chess-darksquares/id6758460463",
            "note_fr": "Informationnel — Stockfish cité publiquement."
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://darksquares.net/",
            "note_fr": "Informationnel — discours public factuel."
          },
          {
            "code": "F1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/blindfold-chess-darksquares/id6758460463",
            "note_fr": "Informationnel — développeur nommé publiquement."
          },
          {
            "code": "F3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://darksquares.net/",
            "note_fr": "Exercices interactifs — accessibles en gratuit sans quota (« unlimited exercises », niveaux 1-3)."
          },
          {
            "code": "F4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://darksquares.net/",
            "note_fr": "Parcours par niveaux publié publiquement ; praticable en gratuit jusqu'au niveau 3."
          },
          {
            "code": "F5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/blindfold-chess-darksquares/id6758460463",
            "note_fr": "Informationnel — historique de versions public."
          },
          {
            "code": "G1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://darksquares.net/pricing",
            "note_fr": "Gratuit = parties contre l'IA illimitées (« unlimited games vs AI ») aux difficultés 1-3 ; les 8 difficultés en Pro. NB : les parties en commande vocale sont limitées à 1/jour en gratuit."
          },
          {
            "code": "G3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://darksquares.net/pricing",
            "note_fr": "Informationnel — web, iPhone, iPad, Android."
          },
          {
            "code": "H2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/blindfold-chess-darksquares/id6758460463",
            "note_fr": "Informationnel — notes store publiques."
          },
          {
            "code": "H3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://darksquares.net/",
            "note_fr": "Informationnel (langues) — vaut en gratuit comme en payant."
          },
          {
            "code": "H4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/blindfold-chess-darksquares/id6758460463",
            "note_fr": "Voix et saisie texte incluses dans le gratuit (« voice and text input » listés côté Free sur /pricing)."
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/blindfold-chess-darksquares/id6758460463",
            "note_fr": "Informationnel — « fully functional without internet » ; vaut en gratuit comme en payant."
          },
          {
            "code": "I1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://darksquares.net/pricing",
            "note_fr": "Informationnel — remises clubs annoncées publiquement."
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://darksquares.net/pricing",
            "note_fr": "« achievements, XP, and cross-device sync » inclus dans le gratuit ; aucune mécanique payante récurrente (achat unique)."
          },
          {
            "code": "K1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://darksquares.net/privacy",
            "note_fr": "Informationnel (politique) — portabilité sur demande, vaut en gratuit comme en payant."
          },
          {
            "code": "K2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://darksquares.net/privacy",
            "note_fr": "Informationnel (politique) — RGPD, hébergement Supabase ; vaut en gratuit comme en payant."
          },
          {
            "code": "K3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          }
        ]
      }
    },
    {
      "slug": "checkmatex",
      "name": "CheckmateX",
      "url": "https://checkmatex.app/",
      "kind": "platform",
      "type": {
        "en": "spaced-repetition opening trainer",
        "fr": "entraîneur d’ouvertures à répétition espacée"
      },
      "price": {
        "en": "Pro annual $50/yr ≈ €46 (× 0.92) — annual price shown on checkmatex.app (monthly $5).",
        "fr": "Pro annuel 50 $/an ≈ 46 € (× 0,92) — annuel affiché sur checkmatex.app (mensuel 5 $)."
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 2.45,
      "unweighted_score": 2.19,
      "category_scores": {
        "A": 0,
        "B": 2.8,
        "C": 1.9,
        "D": 6.7,
        "E": 3.3,
        "F": 2,
        "G": 1.7,
        "H": 2.7,
        "I": 0,
        "J": 0.8,
        "K": 2.2
      },
      "scores": {
        "A": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          2,
          2,
          0,
          0,
          0,
          1
        ],
        "C": [
          0,
          1,
          0,
          0,
          0,
          0,
          0,
          2,
          2
        ],
        "D": [
          2,
          2,
          1,
          3
        ],
        "E": [
          1,
          0,
          1,
          2
        ],
        "F": [
          0,
          0,
          1,
          0,
          2
        ],
        "G": [
          1,
          1,
          0,
          0
        ],
        "H": [
          2,
          0,
          0,
          0,
          2
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          0,
          1,
          0,
          0
        ],
        "K": [
          1,
          1,
          0
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 2.19,
        "criteria": [
          {
            "code": "A1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B1",
            "status": "quota-real",
            "quota": "Up to 20 of your own openings",
            "source_url": "https://checkmatex.app/",
            "note_fr": "Plan gratuit : 20 ouvertures personnelles max ; Pro : « Unlimited custom openings ». Un stock de 20 répertoires permet un usage quotidien réel."
          },
          {
            "code": "B2",
            "status": "quota-symbolic",
            "quota": "All 20 openings, energy-paced",
            "source_url": "https://checkmatex.app/",
            "note_fr": "Énergie quotidienne sans chiffre publié (ni sur la page tarifs ni sur le blog) ; Pro : « Unlimited energy — train without limits ». Limited sans nombre = quota-symbolic."
          },
          {
            "code": "B3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B6",
            "status": "quota-symbolic",
            "quota": "All 20 openings, energy-paced",
            "source_url": "https://checkmatex.app/",
            "note_fr": "Les indices sont inclus au plan gratuit (« Trainer: hints, snap-back & mastery % ») mais l'usage du trainer est régi par l'énergie, montant non publié."
          },
          {
            "code": "C1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://play.google.com/store/apps/details?id=app.checkmatex",
            "note_fr": "« Sharpen your chess tactics with thousands of puzzles » — app gratuite (achats intégrés) ; aucun quota documenté sur les puzzles, et la colonne Pro du site ne les réserve pas."
          },
          {
            "code": "C3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C8",
            "status": "quota-symbolic",
            "quota": "All 20 openings, energy-paced",
            "source_url": "https://checkmatex.app/",
            "note_fr": "Les révisions SRS consomment l'énergie quotidienne du plan gratuit ; montant non publié (Pro : « Unlimited energy — train without limits »)."
          },
          {
            "code": "C9",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://checkmatex.app/",
            "note_fr": "« Daily energy, quests & achievements » listé DANS le plan gratuit — les quêtes quotidiennes (la « file » du service) sont gratuites."
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://checkmatex.app/",
            "note_fr": "Critère informationnel — tableau Free ($0/forever) vs Pro public."
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://checkmatex.app/",
            "note_fr": "Critère informationnel — « $50 billed yearly » affiché publiquement."
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://checkmatex.app/terms",
            "note_fr": "Critère informationnel."
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://checkmatex.app/",
            "note_fr": "Critère informationnel — un seul palier Pro."
          },
          {
            "code": "E1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://checkmatex.app/",
            "note_fr": "Critère informationnel — témoignages publics."
          },
          {
            "code": "E2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://checkmatex.app/",
            "note_fr": "Critère informationnel."
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://checkmatex.app/",
            "note_fr": "Critère informationnel."
          },
          {
            "code": "F1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F3",
            "status": "quota-symbolic",
            "quota": "All 20 openings, energy-paced",
            "source_url": "https://checkmatex.app/",
            "note_fr": "Le seul format (drill interactif) est régi en gratuit par l'énergie quotidienne, sans chiffre publié."
          },
          {
            "code": "F4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://play.google.com/store/apps/details?id=app.checkmatex",
            "note_fr": "Critère informationnel — fraîcheur constatée sur la fiche store."
          },
          {
            "code": "G1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://play.google.com/store/apps/details?id=app.checkmatex",
            "note_fr": "« Challenge real opponents in live online chess » — app gratuite, aucun quota documenté ; non listé dans la colonne Pro du site."
          },
          {
            "code": "G2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://play.google.com/store/apps/details?id=app.checkmatex",
            "note_fr": "« Test your skills against Stockfish, the world's strongest chess engine » — app gratuite, aucun quota documenté."
          },
          {
            "code": "G3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://checkmatex.app/",
            "note_fr": "Critère informationnel — « Web + Android · leaderboard » dans le plan gratuit."
          },
          {
            "code": "H2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://play.google.com/store/apps/details?id=app.checkmatex",
            "note_fr": "Critère informationnel — jeu hors-ligne contre Stockfish dans l'app gratuite."
          },
          {
            "code": "I1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://checkmatex.app/",
            "note_fr": "Leaderboard listé dans le plan gratuit (« Web + Android · leaderboard »)."
          },
          {
            "code": "J3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "K1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://checkmatex.app/privacy",
            "note_fr": "Portabilité « machine-readable format » sur demande — droit RGPD, gratuit."
          },
          {
            "code": "K2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://checkmatex.app/privacy",
            "note_fr": "Critère informationnel."
          },
          {
            "code": "K3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          }
        ]
      }
    },
    {
      "slug": "chessbuddy",
      "name": "Chessbuddy",
      "url": "https://chessbuddy.app/en/",
      "kind": "platform",
      "type": {
        "en": "spaced-repetition tactics trainer",
        "fr": "entraîneur tactique à répétition espacée"
      },
      "price": {
        "en": "$48/yr ≈ €44 (Supporter, annual price shown; $6/mo)",
        "fr": "48 $/an ≈ 44 € (Supporter, annuel affiché ; 6 $/mois)"
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 2.44,
      "unweighted_score": 2.41,
      "category_scores": {
        "A": 0,
        "B": 0.6,
        "C": 4.4,
        "D": 6.7,
        "E": 4.2,
        "F": 1.3,
        "G": 0,
        "H": 2,
        "I": 0,
        "J": 1.7,
        "K": 5.6
      },
      "scores": {
        "A": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          0,
          0,
          0,
          0,
          0,
          1
        ],
        "C": [
          0,
          2,
          1,
          2,
          2,
          0,
          2,
          2,
          1
        ],
        "D": [
          2,
          2,
          1,
          3
        ],
        "E": [
          0,
          2,
          1,
          2
        ],
        "F": [
          0,
          0,
          1,
          0,
          1
        ],
        "G": [
          0,
          0,
          0,
          0
        ],
        "H": [
          2,
          0,
          0,
          0,
          1
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          0,
          0,
          0,
          2
        ],
        "K": [
          2,
          3,
          0
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 2.34,
        "criteria": [
          {
            "code": "A1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B6",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessbuddy.app/en/learn",
            "note_fr": "Puzzles par ouverture nommée — FAQ du site : « Yes, Chessbuddy is completely free to use with no signup required. »"
          },
          {
            "code": "C1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessbuddy.app/en/",
            "note_fr": "FAQ : « Yes, Chessbuddy is completely free to use with no signup required. You can start solving puzzles immediately. » Pubs en gratuit (l'« ad-free experience » est un extra Supporter)."
          },
          {
            "code": "C3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessbuddy.app/en/learn",
            "note_fr": "Thèmes de finales dans les puzzles gratuits (FAQ : « Endgames (rook, pawn, queen) »)."
          },
          {
            "code": "C4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessbuddy.app/en/learn",
            "note_fr": "Puzzles de parties de GM, résolution gratuite sans quota documenté."
          },
          {
            "code": "C5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessbuddy.app/en/learn",
            "note_fr": "Thèmes Quiet Move / Trapped Piece / Hanging Piece dans la base gratuite."
          },
          {
            "code": "C6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C7",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessbuddy.app/en/",
            "note_fr": "« Adaptive difficulty » et cote Glicko2 par thème, hors du périmètre Supporter."
          },
          {
            "code": "C8",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessbuddy.app/en/",
            "note_fr": "Reflect / Reinforce non listés parmi les extras Supporter — aucun quota documenté."
          },
          {
            "code": "C9",
            "status": "quota-real",
            "quota": "More than 3 training units",
            "source_url": "https://chessbuddy.app/en/",
            "note_fr": "Starter (croix rouges du tableau) : « More than 3 training units » et « More than 3 collections » réservés à Supporter — le gratuit garde jusqu'à 3 unités et 3 collections simultanées, usage quotidien réel possible."
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessbuddy.app/en/",
            "note_fr": "Critère informationnel — tableau Starter/Supporter public."
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessbuddy.app/en/",
            "note_fr": "Critère informationnel — prix affiché."
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessbuddy.app/en/",
            "note_fr": "Critère informationnel."
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessbuddy.app/en/",
            "note_fr": "Critère informationnel — un seul palier Supporter."
          },
          {
            "code": "E1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessbuddy.app/en/about",
            "note_fr": "Critère informationnel — provenance Lichess documentée publiquement."
          },
          {
            "code": "E3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessbuddy.app/en/about",
            "note_fr": "Critère informationnel — FAQ nomme Glicko2 pour la cote."
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessbuddy.app/en/",
            "note_fr": "Critère informationnel."
          },
          {
            "code": "F1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessbuddy.app/en/",
            "note_fr": "Format unique (puzzles interactifs), gratuit sans quota documenté."
          },
          {
            "code": "F4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://play.google.com/store/apps/details?id=app.chessbuddy",
            "note_fr": "Critère informationnel."
          },
          {
            "code": "G1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessbuddy.app/en/",
            "note_fr": "Critère informationnel — web + Android gratuits."
          },
          {
            "code": "H2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessbuddy.app/en/",
            "note_fr": "Critère informationnel."
          },
          {
            "code": "I1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessbuddy.app/en/",
            "note_fr": "XP et classements accessibles en gratuit ; non listés parmi les extras Supporter."
          },
          {
            "code": "K1",
            "status": "paid",
            "quota": null,
            "source_url": "https://chessbuddy.app/en/",
            "note_fr": "« Export statistics as CSV & Excel » porte une croix rouge dans la colonne Starter du tableau des plans — réservé à Supporter."
          },
          {
            "code": "K2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessbuddy.app/en/privacy-policy",
            "note_fr": "Critère informationnel."
          },
          {
            "code": "K3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          }
        ]
      }
    },
    {
      "slug": "chess-endgame-training-supertorpe",
      "name": "Chess Endgame Training (supertorpe)",
      "url": "https://chess-endgame-trainer.mooo.com",
      "kind": "platform",
      "type": {
        "en": "open-source endgame trainer",
        "fr": "entraîneur de finales open source"
      },
      "price": {
        "en": "€0 — open source GPL-3.0 (https://api.github.com/repos/supertorpe/chessendgametraining); rule: free",
        "fr": "0 € — open source GPL-3.0 (https://api.github.com/repos/supertorpe/chessendgametraining) ; règle : gratuit"
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 2.43,
      "unweighted_score": 2.81,
      "category_scores": {
        "A": 0,
        "B": 0,
        "C": 0.7,
        "D": 10,
        "E": 5.8,
        "F": 1.3,
        "G": 0.8,
        "H": 2,
        "I": 0.8,
        "J": 1.7,
        "K": 7.8
      },
      "scores": {
        "A": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "C": [
          0,
          0,
          2,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "D": [
          3,
          3,
          3,
          3
        ],
        "E": [
          0,
          2,
          3,
          2
        ],
        "F": [
          0,
          0,
          0,
          0,
          2
        ],
        "G": [
          0,
          1,
          0,
          0
        ],
        "H": [
          2,
          0,
          0,
          0,
          1
        ],
        "I": [
          0,
          0,
          1,
          0
        ],
        "J": [
          0,
          0,
          0,
          2
        ],
        "K": [
          2,
          2,
          3
        ]
      },
      "evidence_urls": {
        "A": [
          "https://github.com/supertorpe/chessendgametraining",
          "https://github.com/supertorpe/chessendgametraining",
          "https://github.com/supertorpe/chessendgametraining",
          "https://github.com/supertorpe/chessendgametraining",
          "https://github.com/supertorpe/chessendgametraining",
          "https://github.com/supertorpe/chessendgametraining",
          "https://github.com/supertorpe/chessendgametraining",
          "https://github.com/supertorpe/chessendgametraining"
        ],
        "B": [
          "https://github.com/supertorpe/chessendgametraining",
          "https://github.com/supertorpe/chessendgametraining",
          "https://github.com/supertorpe/chessendgametraining",
          "https://github.com/supertorpe/chessendgametraining",
          "https://github.com/supertorpe/chessendgametraining",
          "https://github.com/supertorpe/chessendgametraining"
        ],
        "C": [
          "https://github.com/supertorpe/chessendgametraining",
          "https://github.com/supertorpe/chessendgametraining",
          "https://github.com/supertorpe/chessendgametraining",
          "https://github.com/supertorpe/chessendgametraining",
          "https://github.com/supertorpe/chessendgametraining",
          "https://github.com/supertorpe/chessendgametraining",
          "https://github.com/supertorpe/chessendgametraining",
          "https://github.com/supertorpe/chessendgametraining",
          "https://github.com/supertorpe/chessendgametraining"
        ],
        "D": [
          "https://github.com/supertorpe/chessendgametraining",
          "https://github.com/supertorpe/chessendgametraining",
          "https://github.com/supertorpe/chessendgametraining",
          "https://github.com/supertorpe/chessendgametraining"
        ],
        "E": [
          "https://github.com/supertorpe/chessendgametraining",
          "https://github.com/supertorpe/chessendgametraining",
          "https://github.com/supertorpe/chessendgametraining",
          "https://github.com/supertorpe/chessendgametraining"
        ],
        "F": [
          "https://github.com/supertorpe/chessendgametraining",
          "https://github.com/supertorpe/chessendgametraining",
          "https://github.com/supertorpe/chessendgametraining",
          "https://github.com/supertorpe/chessendgametraining",
          "https://github.com/supertorpe/chessendgametraining"
        ],
        "G": [
          "https://github.com/supertorpe/chessendgametraining",
          "https://github.com/supertorpe/chessendgametraining",
          "https://github.com/supertorpe/chessendgametraining",
          "https://github.com/supertorpe/chessendgametraining"
        ],
        "H": [
          "https://github.com/supertorpe/chessendgametraining",
          "https://play.google.com/store/apps/details?id=com.supertorpe.chessendgametraining",
          "https://github.com/supertorpe/chessendgametraining",
          "https://github.com/supertorpe/chessendgametraining",
          "https://raw.githubusercontent.com/supertorpe/chessendgametraining/master/PRIVACY.md"
        ],
        "I": [
          "https://github.com/supertorpe/chessendgametraining",
          "https://github.com/supertorpe/chessendgametraining",
          "https://github.com/supertorpe/chessendgametraining",
          "https://github.com/supertorpe/chessendgametraining"
        ],
        "J": [
          "https://github.com/supertorpe/chessendgametraining",
          "https://github.com/supertorpe/chessendgametraining",
          "https://github.com/supertorpe/chessendgametraining",
          "https://github.com/supertorpe/chessendgametraining"
        ],
        "K": [
          "https://github.com/supertorpe/chessendgametraining",
          "https://raw.githubusercontent.com/supertorpe/chessendgametraining/master/PRIVACY.md",
          "https://github.com/supertorpe/chessendgametraining"
        ]
      },
      "sources": [
        "https://github.com/supertorpe/chessendgametraining",
        "https://github.com/supertorpe/chessendgametraining/releases",
        "https://github.com/supertorpe/chessendgametraining/commits/master",
        "https://chess-endgame-trainer.mooo.com",
        "https://play.google.com/store/apps/details?id=com.supertorpe.chessendgametraining",
        "https://raw.githubusercontent.com/supertorpe/chessendgametraining/master/README.md",
        "https://raw.githubusercontent.com/supertorpe/chessendgametraining/master/PRIVACY.md"
      ],
      "review_url": "https://www.chesspivot.com/en/reviews/chess-endgame-training-supertorpe",
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 2.43,
        "criteria": [
          {
            "code": "A1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/supertorpe/chessendgametraining",
            "note_fr": "« Play against the Syzygy tablebases or against the Stockfish 16 NNUE engine » — logiciel libre GPL-3.0, aucun paiement ni fonction premium mentionnés."
          },
          {
            "code": "C4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C9",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://api.github.com/repos/supertorpe/chessendgametraining",
            "note_fr": "GPL-3.0, tout est gratuit."
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://api.github.com/repos/supertorpe/chessendgametraining",
            "note_fr": "0 EUR — critère informationnel."
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/supertorpe/chessendgametraining",
            "note_fr": "Critère informationnel — aucun paiement."
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/supertorpe/chessendgametraining",
            "note_fr": "Critère informationnel — aucun palier payant."
          },
          {
            "code": "E1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/supertorpe/chessendgametraining",
            "note_fr": "Critère informationnel — solutions par tables Syzygy."
          },
          {
            "code": "E3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/supertorpe/chessendgametraining",
            "note_fr": "Critère informationnel — code source public."
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/supertorpe/chessendgametraining",
            "note_fr": "Critère informationnel."
          },
          {
            "code": "F1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://api.github.com/repos/supertorpe/chessendgametraining",
            "note_fr": "Critère informationnel — dépôt actif."
          },
          {
            "code": "G1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/supertorpe/chessendgametraining",
            "note_fr": "Stockfish 16 NNUE paramétrable, gratuit sans paywall."
          },
          {
            "code": "G3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/supertorpe/chessendgametraining",
            "note_fr": "Critère informationnel — PWA + Google Play, gratuits."
          },
          {
            "code": "H2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://raw.githubusercontent.com/supertorpe/chessendgametraining/master/PRIVACY.md",
            "note_fr": "Critère informationnel."
          },
          {
            "code": "I1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/supertorpe/chessendgametraining",
            "note_fr": "Saisie d'une position par FEN dans l'URL — libre et gratuit."
          },
          {
            "code": "I4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/supertorpe/chessendgametraining",
            "note_fr": "« Tracks your personal record in each position » — gratuit, aucune mécanique payante."
          },
          {
            "code": "K1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/supertorpe/chessendgametraining",
            "note_fr": "« Copy FEN and PGN to clipboard » + sauvegarde Google Drive, gratuits."
          },
          {
            "code": "K2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://raw.githubusercontent.com/supertorpe/chessendgametraining/master/PRIVACY.md",
            "note_fr": "Critère informationnel."
          },
          {
            "code": "K3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://api.github.com/repos/supertorpe/chessendgametraining",
            "note_fr": "Code source public GPL-3.0."
          }
        ]
      }
    },
    {
      "slug": "learningchess-net",
      "name": "LearningChess.net",
      "url": "https://www.learningchess.net/",
      "kind": "platform",
      "type": {
        "en": "Hungarian interactive courses by level",
        "fr": "cours interactifs hongrois par niveau"
      },
      "price": {
        "en": "Purchase by course or bundle, no recurring invoicing (ToS); amounts shown only after sign-in: not available.",
        "fr": "Achat par cours ou par lot, sans facturation récurrente (CGU) ; montants affichés seulement après connexion : non disponible."
      },
      "languages": 12,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 2.41,
      "unweighted_score": 2.55,
      "category_scores": {
        "A": 0.4,
        "B": 2.8,
        "C": 2.6,
        "D": 3.3,
        "E": 0.8,
        "F": 6.7,
        "G": 0.8,
        "H": 3.3,
        "I": 0.8,
        "J": 3.3,
        "K": 3.3
      },
      "scores": {
        "A": [
          0,
          0,
          0,
          0,
          0,
          0,
          1,
          0
        ],
        "B": [
          1,
          1,
          0,
          1,
          0,
          2
        ],
        "C": [
          0,
          1,
          1,
          2,
          0,
          0,
          1,
          1,
          1
        ],
        "D": [
          2,
          0,
          0,
          2
        ],
        "E": [
          1,
          0,
          0,
          0
        ],
        "F": [
          2,
          2,
          2,
          2,
          2
        ],
        "G": [
          0,
          1,
          0,
          0
        ],
        "H": [
          1,
          0,
          2,
          1,
          1
        ],
        "I": [
          0,
          0,
          0,
          1
        ],
        "J": [
          0,
          0,
          2,
          2
        ],
        "K": [
          1,
          2,
          0
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 2.1,
        "criteria": [
          {
            "code": "A1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A7",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.learningchess.net/help",
            "note_fr": "« You can gain virtual Rating points in LearningChess with each solution in a lesson » — s'accumule aussi sur les leçons gratuites."
          },
          {
            "code": "A8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B1",
            "status": "quota-symbolic",
            "quota": "One lesson may be tried absolutely free of charge and without registration",
            "source_url": "https://www.learningchess.net/help",
            "note_fr": "Le cours de répertoire (« Active Opening Repertoire ») s'achète ; en gratuit, une seule leçon d'essai par cours."
          },
          {
            "code": "B2",
            "status": "quota-symbolic",
            "quota": "One lesson may be tried absolutely free of charge and without registration",
            "source_url": "https://www.learningchess.net/help",
            "note_fr": "Entraînement du répertoire = leçons du cours payant ; seule la leçon d'essai est gratuite."
          },
          {
            "code": "B3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.learningchess.net/help",
            "note_fr": "Critère informationnel — mention publique « developed by international grandmasters »."
          },
          {
            "code": "B5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B6",
            "status": "quota-symbolic",
            "quota": "One lesson may be tried absolutely free of charge and without registration",
            "source_url": "https://www.learningchess.net/help",
            "note_fr": "Cours d'ouvertures payants ; « the new grandmaster lessons are also free of charge » existe mais sans nombre publié ni thème garanti."
          },
          {
            "code": "C1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.learningchess.net/help",
            "note_fr": "« You can try it in the Tactics Trainer menu at any time, where you can find unlimited test » — tactique gratuite sans limite."
          },
          {
            "code": "C3",
            "status": "quota-symbolic",
            "quota": "One lesson may be tried absolutely free of charge and without registration",
            "source_url": "https://www.learningchess.net/help",
            "note_fr": "Les finales vivent dans les leçons des cours payants."
          },
          {
            "code": "C4",
            "status": "quota-symbolic",
            "quota": "One lesson may be tried absolutely free of charge and without registration",
            "source_url": "https://www.learningchess.net/help",
            "note_fr": "Leçons de stratégie dans les cours payants ; leçons GM gratuites sans nombre publié (« Limited » sans chiffre = quota-symbolic)."
          },
          {
            "code": "C5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C7",
            "status": "quota-symbolic",
            "quota": "One lesson may be tried absolutely free of charge and without registration",
            "source_url": "https://www.learningchess.net/help",
            "note_fr": "« A free Placement Test is also waiting for you » (gratuit), mais les cours par cible de classement 1400/1600/1800 s'achètent."
          },
          {
            "code": "C8",
            "status": "quota-symbolic",
            "quota": "One lesson may be tried absolutely free of charge and without registration",
            "source_url": "https://www.learningchess.net/help",
            "note_fr": "La révision (leçons à recommencer) suit l'accès aux cours, payant."
          },
          {
            "code": "C9",
            "status": "quota-symbolic",
            "quota": "One lesson may be tried absolutely free of charge and without registration",
            "source_url": "https://www.learningchess.net/help",
            "note_fr": "Curriculum ordonné = les cours payants ; test de placement gratuit."
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.learningchess.net/help",
            "note_fr": "Critère informationnel."
          },
          {
            "code": "D2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "D3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.learningchess.net/terms",
            "note_fr": "Critère informationnel — achat par cours ou bundle."
          },
          {
            "code": "E1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.learningchess.net/terms",
            "note_fr": "Critère informationnel — « Success Guarantee » publique."
          },
          {
            "code": "E2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F1",
            "status": "quota-symbolic",
            "quota": "One lesson may be tried absolutely free of charge and without registration",
            "source_url": "https://www.learningchess.net/courses",
            "note_fr": "Catalogue par niveau visible publiquement, mais l'accès aux cours Level 1/2/3 est payant."
          },
          {
            "code": "F2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.learningchess.net/courses",
            "note_fr": "Critère informationnel — GM Jozsef Pinter nommé publiquement."
          },
          {
            "code": "F3",
            "status": "quota-symbolic",
            "quota": "One lesson may be tried absolutely free of charge and without registration",
            "source_url": "https://www.learningchess.net/help",
            "note_fr": "Le Tactics Trainer (un des formats) est illimité gratuit ; les leçons interactives complètes sont dans les cours payants."
          },
          {
            "code": "F4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.learningchess.net/help",
            "note_fr": "Critère informationnel — méthode (3 cours x 36 leçons, cibles de classement) publiée."
          },
          {
            "code": "F5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://learningchess.net/blog/",
            "note_fr": "Critère informationnel."
          },
          {
            "code": "G1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.learningchess.net/help",
            "note_fr": "« The play chess option is available for everyone without restriction » — jeu contre l'ordinateur gratuit."
          },
          {
            "code": "G3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.learningchess.net/help",
            "note_fr": "Critère informationnel."
          },
          {
            "code": "H2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.learningchess.net/",
            "note_fr": "Critère informationnel — 12 langues d'interface, dont le francais."
          },
          {
            "code": "H4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://learningchess.net/blog/",
            "note_fr": "Critère informationnel — Text-to-Speech annoncé publiquement."
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.learningchess.net/",
            "note_fr": "Critère informationnel."
          },
          {
            "code": "I1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.learningchess.net/help",
            "note_fr": "« If you use the Free Sign Up option, then your games can be saved, revised and shown to your friends or teacher later » — compte gratuit requis = gratuit."
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J3",
            "status": "paid",
            "quota": null,
            "source_url": "https://www.learningchess.net/",
            "note_fr": "LMS ecoles/professeurs : « 30-day risk-free trial with no payment » — un essai limité dans le temps n'est pas du gratuit."
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.learningchess.net/",
            "note_fr": "Critère informationnel — badges et certificat, sans monnaie virtuelle."
          },
          {
            "code": "K1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.learningchess.net/privacy",
            "note_fr": "« request a copy of your information » — droit gratuit."
          },
          {
            "code": "K2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.learningchess.net/privacy",
            "note_fr": "Critère informationnel."
          },
          {
            "code": "K3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          }
        ]
      }
    },
    {
      "slug": "chesslecture-com",
      "name": "ChessLecture.com",
      "url": "https://www.chesslecture.com",
      "kind": "platform",
      "type": {
        "en": "Video lesson library, 5,505 videos",
        "fr": "Vidéothèque de cours, 5 505 vidéos"
      },
      "price": {
        "en": "≈ €55/yr (only published price: 3-month entry offer for $15 \"a $38.95 value\" → 4 × $15 = $60; the regular price is not readable: pricing/membership pages return 404-500)",
        "fr": "≈ 55 €/an (seul prix publié : offre d’entrée 3 mois pour 15 $ « a $38.95 value » → 4 × 15 $ = 60 $ ; le tarif régulier n’est pas lisible : pages pricing/membership en 404-500)"
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 2.4,
      "unweighted_score": 2.15,
      "category_scores": {
        "A": 0,
        "B": 2.8,
        "C": 1.5,
        "D": 6.7,
        "E": 0.8,
        "F": 6.7,
        "G": 0,
        "H": 0.7,
        "I": 0,
        "J": 3.3,
        "K": 1.1
      },
      "scores": {
        "A": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          1,
          1,
          0,
          1,
          0,
          2
        ],
        "C": [
          0,
          0,
          1,
          1,
          0,
          0,
          1,
          0,
          1
        ],
        "D": [
          1,
          2,
          2,
          3
        ],
        "E": [
          0,
          0,
          0,
          1
        ],
        "F": [
          2,
          3,
          1,
          1,
          3
        ],
        "G": [
          0,
          0,
          0,
          0
        ],
        "H": [
          1,
          0,
          0,
          0,
          0
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          0,
          1,
          0,
          3
        ],
        "K": [
          0,
          1,
          0
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": null
    },
    {
      "slug": "chesspuzzle-net",
      "name": "ChessPuzzle.net",
      "url": "https://chesspuzzle.net/",
      "kind": "platform",
      "type": {
        "en": "puzzle bank + structured Academy",
        "fr": "banque de puzzles + Academy structurée"
      },
      "price": {
        "en": "Premium €34.99/yr (€4.99/mo) — read by hand on /Premium/Purchase, 2026-09-01.",
        "fr": "Premium 34,99 €/an (4,99 €/mois) — relevé à la main sur /Premium/Purchase le 01/09/2026."
      },
      "languages": 20,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 2.39,
      "unweighted_score": 2.38,
      "category_scores": {
        "A": 0,
        "B": 0,
        "C": 4.1,
        "D": 5.8,
        "E": 3.3,
        "F": 5.3,
        "G": 0,
        "H": 2.7,
        "I": 0.8,
        "J": 4.2,
        "K": 0
      },
      "scores": {
        "A": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "C": [
          0,
          2,
          1,
          2,
          2,
          0,
          2,
          0,
          2
        ],
        "D": [
          2,
          2,
          0,
          3
        ],
        "E": [
          1,
          0,
          1,
          2
        ],
        "F": [
          2,
          1,
          1,
          2,
          2
        ],
        "G": [
          0,
          0,
          0,
          0
        ],
        "H": [
          1,
          0,
          2,
          0,
          1
        ],
        "I": [
          1,
          0,
          0,
          0
        ],
        "J": [
          0,
          2,
          1,
          2
        ],
        "K": [
          0,
          0,
          0
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 1.98,
        "criteria": [
          {
            "code": "A1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesspuzzle.net/",
            "note_fr": "L'accueil marque « FREE » les modes Puzzle Inception, Puzzle Climb, Puzzle Filter, Puzzle Practice et Checkmate Armageddon (seule la Puzzle Academy est marquée « PREMIUM ») ; aucun quota quotidien publié ; pubs en gratuit."
          },
          {
            "code": "C3",
            "status": "paid",
            "quota": null,
            "source_url": "https://chesspuzzle.net/Academy",
            "note_fr": "Les cours de finales vivent dans la Puzzle Academy : « Yes. Puzzle Academy is included with Premium. »"
          },
          {
            "code": "C4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesspuzzle.net/",
            "note_fr": "Puzzle Inception (vigilance + évaluation) marqué « FREE » sur l'accueil."
          },
          {
            "code": "C5",
            "status": "paid",
            "quota": null,
            "source_url": "https://chesspuzzle.net/Academy",
            "note_fr": "Le cours « Defence » fait partie de la Puzzle Academy, incluse avec Premium (« Yes. Puzzle Academy is included with Premium. »)."
          },
          {
            "code": "C6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C7",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesspuzzle.net/",
            "note_fr": "Cote de puzzle et modes adaptés au niveau disponibles dans les modes marqués « FREE » ; les « Personalized workouts » restent Premium (Academy)."
          },
          {
            "code": "C8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C9",
            "status": "paid",
            "quota": null,
            "source_url": "https://chesspuzzle.net/Premium",
            "note_fr": "« Personalized workouts » listés parmi les avantages de la Puzzle Academy, réservée au Premium."
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesspuzzle.net/",
            "note_fr": "Critère informationnel — badges FREE/PREMIUM publics sur l'accueil."
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesspuzzle.net/Premium/Purchase",
            "note_fr": "Critère informationnel — 34,99 EUR/an ; montants visibles seulement après connexion (relevé à la main, 01/09/2026)."
          },
          {
            "code": "D3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesspuzzle.net/Premium",
            "note_fr": "Critère informationnel — un seul palier Premium (Academy, sans pub, échiquiers)."
          },
          {
            "code": "E1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesspuzzle.net/Academy",
            "note_fr": "Critère informationnel — témoignages publics."
          },
          {
            "code": "E2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesspuzzle.net/",
            "note_fr": "Critère informationnel."
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesspuzzle.net/",
            "note_fr": "Critère informationnel."
          },
          {
            "code": "F1",
            "status": "paid",
            "quota": null,
            "source_url": "https://chesspuzzle.net/Academy",
            "note_fr": "Les 8 cours rangés Beginner-Expert sont la Puzzle Academy : « Yes. Puzzle Academy is included with Premium. »"
          },
          {
            "code": "F2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesspuzzle.net/Home/Contact",
            "note_fr": "Critère informationnel — auteur nommé publiquement."
          },
          {
            "code": "F3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesspuzzle.net/",
            "note_fr": "Le format (exercices interactifs) est pleinement présent dans les modes gratuits marqués « FREE »."
          },
          {
            "code": "F4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesspuzzle.net/Academy",
            "note_fr": "Critère informationnel — curriculum (8 cours, 172 compétences, 460 niveaux) publié publiquement ; son usage est Premium."
          },
          {
            "code": "F5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesspuzzle.net/Academy",
            "note_fr": "Critère informationnel."
          },
          {
            "code": "G1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesspuzzle.net/",
            "note_fr": "Critère informationnel — site web gratuit."
          },
          {
            "code": "H2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesspuzzle.net/",
            "note_fr": "Critère informationnel — sélecteur de langue constaté lors du relevé initial."
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesspuzzle.net/",
            "note_fr": "Critère informationnel."
          },
          {
            "code": "I1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesspuzzle.net/Players",
            "note_fr": "Puzzles tirés des parties de joueurs célèbres — page publique ; non listé parmi les avantages Premium (Academy, sans pub, échiquiers)."
          },
          {
            "code": "I2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesspuzzle.net/",
            "note_fr": "Leaderboard au menu principal et « climb the leaderboard » sur les modes gratuits."
          },
          {
            "code": "J3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesspuzzle.net/",
            "note_fr": "« Are you a chess coach? Create your club to track your students' progress » sur l'accueil — non listé parmi les avantages Premium."
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesspuzzle.net/Premium",
            "note_fr": "Critère informationnel — classements gratuits, pubs en gratuit, pas de monnaie virtuelle."
          },
          {
            "code": "K1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "K2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "K3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          }
        ]
      }
    },
    {
      "slug": "leela-chess-zero",
      "name": "Leela Chess Zero",
      "url": "https://lczero.org/",
      "kind": "engine",
      "type": {
        "en": "open-source neural network engine",
        "fr": "moteur réseau de neurones open source"
      },
      "price": {
        "en": "€0 (GPL v3)",
        "fr": "0 € (GPL v3)"
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": false,
      "overall_score": null,
      "unweighted_score": null,
      "category_scores": {
        "A": 0.4,
        "B": 0,
        "C": 0,
        "D": 10,
        "E": 5.8,
        "F": 0,
        "G": 2.5,
        "H": 2.7,
        "I": 0,
        "J": 3.3,
        "K": 5.6
      },
      "scores": {
        "A": [
          0,
          1,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "C": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "D": [
          3,
          3,
          3,
          3
        ],
        "E": [
          0,
          2,
          3,
          2
        ],
        "F": [
          0,
          0,
          0,
          0,
          0
        ],
        "G": [
          0,
          2,
          0,
          1
        ],
        "H": [
          1,
          0,
          0,
          0,
          3
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          0,
          2,
          0,
          2
        ],
        "K": [
          0,
          2,
          3
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": null
    },
    {
      "slug": "old-school-chess-oldschoolchess-com",
      "name": "Old School Chess (oldschoolchess.com)",
      "url": "https://oldschoolchess.com/",
      "kind": "platform",
      "type": {
        "en": "AI coach and lessons for adult beginners",
        "fr": "coach IA et leçons pour débutants adultes"
      },
      "price": {
        "en": "$59/yr ≈ €54.28 (Premium, annual price shown on oldschoolchess.com); monthly $19.",
        "fr": "59 $/an ≈ 54,28 € (Premium, annuel affiché sur oldschoolchess.com) ; mensuel 19 $."
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 2.32,
      "unweighted_score": 1.97,
      "category_scores": {
        "A": 1.7,
        "B": 0,
        "C": 2.6,
        "D": 6.7,
        "E": 2.5,
        "F": 3.3,
        "G": 0.8,
        "H": 1.3,
        "I": 0,
        "J": 1.7,
        "K": 1.1
      },
      "scores": {
        "A": [
          0,
          1,
          1,
          0,
          2,
          0,
          0,
          0
        ],
        "B": [
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "C": [
          2,
          0,
          0,
          1,
          0,
          0,
          1,
          1,
          2
        ],
        "D": [
          2,
          2,
          1,
          3
        ],
        "E": [
          0,
          0,
          1,
          2
        ],
        "F": [
          2,
          0,
          1,
          2,
          0
        ],
        "G": [
          0,
          1,
          0,
          0
        ],
        "H": [
          1,
          0,
          0,
          0,
          1
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          0,
          0,
          0,
          2
        ],
        "K": [
          0,
          1,
          0
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 1.94,
        "criteria": [
          {
            "code": "A1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://oldschoolchess.com/",
            "note_fr": "« Every lesson and games with Archer are free from day one. » — les parties commentées par Archer sont gratuites (le chat en jeu, lui, est Premium)."
          },
          {
            "code": "A3",
            "status": "paid",
            "quota": null,
            "source_url": "https://oldschoolchess.com/",
            "note_fr": "« Premium adds the part nobody else automates: the personalised daily plan that watches you back, in-game Archer chat, and targeted drills on your weak patterns. » — l'essai 7 jours ne compte pas comme gratuit."
          },
          {
            "code": "A4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://oldschoolchess.com/",
            "note_fr": "Explication des coups pendant la partie contre Archer, incluse dans « Every lesson and games with Archer are free from day one. »"
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C1",
            "status": "paid",
            "quota": null,
            "source_url": "https://oldschoolchess.com/",
            "note_fr": "« Tonight's blunder becomes tomorrow's puzzle » appartient au plan quotidien personnalisé et aux drills ciblés, listés Premium."
          },
          {
            "code": "C2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://oldschoolchess.com/",
            "note_fr": "Les 250+ leçons sont gratuites (« Every lesson … free from day one »)."
          },
          {
            "code": "C5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C7",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://oldschoolchess.com/",
            "note_fr": "« lessons sequenced by rating level » — les leçons étant gratuites, la séquence par niveau l'est aussi."
          },
          {
            "code": "C8",
            "status": "paid",
            "quota": null,
            "source_url": "https://oldschoolchess.com/",
            "note_fr": "Les « targeted drills on your weak patterns » sont explicitement dans le périmètre Premium."
          },
          {
            "code": "C9",
            "status": "paid",
            "quota": null,
            "source_url": "https://oldschoolchess.com/",
            "note_fr": "« the personalised daily plan that watches you back » est Premium ; « A 7-day free trial comes first » = essai limité dans le temps, pas du gratuit."
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://oldschoolchess.com/",
            "note_fr": "Critère informationnel — frontière gratuit/Premium publiée."
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://oldschoolchess.com/",
            "note_fr": "Critère informationnel — « $19 per month, or $59 per year » affiché."
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://oldschoolchess.com/terms",
            "note_fr": "Critère informationnel."
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://oldschoolchess.com/",
            "note_fr": "Critère informationnel — un seul palier Premium."
          },
          {
            "code": "E1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://oldschoolchess.com/",
            "note_fr": "Critère informationnel."
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://oldschoolchess.com/",
            "note_fr": "Critère informationnel."
          },
          {
            "code": "F1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://oldschoolchess.com/",
            "note_fr": "« 250+ lessons sequenced by rating level » — leçons gratuites."
          },
          {
            "code": "F2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://oldschoolchess.com/",
            "note_fr": "Le format (leçons interactives avec coach) est gratuit."
          },
          {
            "code": "F4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://oldschoolchess.com/",
            "note_fr": "Critère informationnel — méthodes nommées (Chernev, Silman, Capablanca, socratique) publiées."
          },
          {
            "code": "F5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://oldschoolchess.com/",
            "note_fr": "« games with Archer are free from day one » — jeu contre le bot gratuit, à son niveau."
          },
          {
            "code": "G3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://oldschoolchess.com/",
            "note_fr": "Critère informationnel — web seul."
          },
          {
            "code": "H2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://oldschoolchess.com/privacy",
            "note_fr": "Critère informationnel."
          },
          {
            "code": "I1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://oldschoolchess.com/",
            "note_fr": "Critère informationnel — design sans classement ni monnaie virtuelle (la mécanique « plan quotidien » elle-même est Premium)."
          },
          {
            "code": "K1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "K2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://oldschoolchess.com/privacy",
            "note_fr": "Critère informationnel — politique publique."
          },
          {
            "code": "K3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          }
        ]
      }
    },
    {
      "slug": "creachess",
      "name": "Creachess",
      "url": "https://www.creachess.com/",
      "kind": "platform",
      "type": {
        "en": "French chess news portal",
        "fr": "portail éditorial français échecs"
      },
      "price": {
        "en": "free (portal with no paid offer; Amazon affiliate links)",
        "fr": "gratuit (portail sans offre payante ; liens d’affiliation Amazon)"
      },
      "languages": 2,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 2.3,
      "unweighted_score": 2.02,
      "category_scores": {
        "A": 0,
        "B": 1.1,
        "C": 1.1,
        "D": 10,
        "E": 1.7,
        "F": 2.7,
        "G": 0,
        "H": 2,
        "I": 0,
        "J": 2.5,
        "K": 1.1
      },
      "scores": {
        "A": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          0,
          0,
          0,
          0,
          0,
          2
        ],
        "C": [
          0,
          1,
          1,
          1,
          0,
          0,
          0,
          0,
          0
        ],
        "D": [
          3,
          3,
          3,
          3
        ],
        "E": [
          0,
          0,
          0,
          2
        ],
        "F": [
          1,
          1,
          2,
          0,
          0
        ],
        "G": [
          0,
          0,
          0,
          0
        ],
        "H": [
          1,
          0,
          1,
          0,
          1
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          0,
          0,
          0,
          3
        ],
        "K": [
          0,
          1,
          0
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 2.3,
        "criteria": [
          {
            "code": "A1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B6",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.creachess.com/",
            "note_fr": "portail entièrement gratuit : aucune offre payante, monétisation par liens d’affiliation Amazon"
          },
          {
            "code": "C1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.creachess.com/",
            "note_fr": "portail entièrement gratuit : aucune offre payante, monétisation par liens d’affiliation Amazon"
          },
          {
            "code": "C3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.creachess.com/",
            "note_fr": "portail entièrement gratuit : aucune offre payante, monétisation par liens d’affiliation Amazon"
          },
          {
            "code": "C4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.creachess.com/cours/",
            "note_fr": "cours texte gratuits, sans compte"
          },
          {
            "code": "C5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C9",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.creachess.com/",
            "note_fr": "tout le contenu est gratuit, sans compte ni paywall"
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.creachess.com/",
            "note_fr": "portail entièrement gratuit : aucune offre payante, monétisation par liens d’affiliation Amazon"
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.creachess.com/",
            "note_fr": "portail entièrement gratuit : aucune offre payante, monétisation par liens d’affiliation Amazon"
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.creachess.com/",
            "note_fr": "portail entièrement gratuit : aucune offre payante, monétisation par liens d’affiliation Amazon"
          },
          {
            "code": "E1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.creachess.com/",
            "note_fr": "portail entièrement gratuit : aucune offre payante, monétisation par liens d’affiliation Amazon"
          },
          {
            "code": "F1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.creachess.com/",
            "note_fr": "portail entièrement gratuit : aucune offre payante, monétisation par liens d’affiliation Amazon"
          },
          {
            "code": "F2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.creachess.com/",
            "note_fr": "portail entièrement gratuit : aucune offre payante, monétisation par liens d’affiliation Amazon"
          },
          {
            "code": "F3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.creachess.com/",
            "note_fr": "portail entièrement gratuit : aucune offre payante, monétisation par liens d’affiliation Amazon"
          },
          {
            "code": "F4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.creachess.com/",
            "note_fr": "portail entièrement gratuit : aucune offre payante, monétisation par liens d’affiliation Amazon"
          },
          {
            "code": "H2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.creachess.com/",
            "note_fr": "portail entièrement gratuit : aucune offre payante, monétisation par liens d’affiliation Amazon"
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.creachess.com/",
            "note_fr": "portail entièrement gratuit : aucune offre payante, monétisation par liens d’affiliation Amazon"
          },
          {
            "code": "I1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.creachess.com/",
            "note_fr": "portail entièrement gratuit : aucune offre payante, monétisation par liens d’affiliation Amazon"
          },
          {
            "code": "K1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "K2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.creachess.com/",
            "note_fr": "critère informationnel : vaut en gratuit comme en payant"
          },
          {
            "code": "K3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          }
        ]
      }
    },
    {
      "slug": "banksiagui",
      "name": "BanksiaGUI",
      "url": "https://banksiagui.com/",
      "kind": "engine",
      "type": {
        "en": "analysis and engine tournament interface",
        "fr": "interface d’analyse et tournois moteurs"
      },
      "price": {
        "en": "Free (€0) — banksiagui.com/download: \"free chess GUI\".",
        "fr": "Gratuit (0 €) — banksiagui.com/download : « free chess GUI »."
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": false,
      "overall_score": null,
      "unweighted_score": null,
      "category_scores": {
        "A": 1.3,
        "B": 0.6,
        "C": 0,
        "D": 9.2,
        "E": 3.3,
        "F": 0,
        "G": 2.5,
        "H": 2,
        "I": 1.7,
        "J": 2.5,
        "K": 3.3
      },
      "scores": {
        "A": [
          2,
          1,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          0,
          0,
          0,
          0,
          1,
          0
        ],
        "C": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "D": [
          3,
          3,
          2,
          3
        ],
        "E": [
          0,
          0,
          2,
          2
        ],
        "F": [
          0,
          0,
          0,
          0,
          0
        ],
        "G": [
          1,
          1,
          1,
          0
        ],
        "H": [
          0,
          0,
          0,
          0,
          3
        ],
        "I": [
          0,
          0,
          1,
          1
        ],
        "J": [
          0,
          1,
          0,
          2
        ],
        "K": [
          2,
          0,
          1
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": null
    },
    {
      "slug": "ideachess",
      "name": "IdeaChess",
      "url": "https://www.ideachess.com/",
      "kind": "platform",
      "type": {
        "en": "Free tactics and mate puzzles",
        "fr": "Puzzles tactiques et mats gratuits"
      },
      "price": {
        "en": "€0 (\"Completely free!\" on ideachess.com; free Android app)",
        "fr": "0 € (« Completely free! » sur ideachess.com ; application Android gratuite)"
      },
      "languages": 2,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 2.28,
      "unweighted_score": 2.27,
      "category_scores": {
        "A": 0,
        "B": 0,
        "C": 2.2,
        "D": 9.2,
        "E": 2.5,
        "F": 0.7,
        "G": 1.7,
        "H": 4,
        "I": 0,
        "J": 2.5,
        "K": 2.2
      },
      "scores": {
        "A": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "C": [
          0,
          2,
          1,
          2,
          0,
          0,
          1,
          0,
          0
        ],
        "D": [
          3,
          3,
          2,
          3
        ],
        "E": [
          1,
          0,
          0,
          2
        ],
        "F": [
          0,
          1,
          0,
          0,
          0
        ],
        "G": [
          0,
          1,
          1,
          0
        ],
        "H": [
          2,
          2,
          1,
          0,
          1
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          0,
          1,
          0,
          2
        ],
        "K": [
          0,
          1,
          1
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 2.28,
        "criteria": [
          {
            "code": "A1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.ideachess.com/",
            "note_fr": "« Completely free chess tactics and strategy training site with over 70.000 interactive checkmate problems and tactics puzzles »"
          },
          {
            "code": "C3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.ideachess.com/",
            "note_fr": "« Completely free! » — site entièrement gratuit, inscription gratuite pour l’ELO et les classements"
          },
          {
            "code": "C4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.ideachess.com/",
            "note_fr": "« Completely free! » — site entièrement gratuit, inscription gratuite pour l’ELO et les classements"
          },
          {
            "code": "C5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C7",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.ideachess.com/",
            "note_fr": "« Completely free! » — site entièrement gratuit, inscription gratuite pour l’ELO et les classements"
          },
          {
            "code": "C8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C9",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.ideachess.com/",
            "note_fr": "« Completely free! » — site entièrement gratuit, inscription gratuite pour l’ELO et les classements"
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.ideachess.com/",
            "note_fr": "« Completely free! » — site entièrement gratuit, inscription gratuite pour l’ELO et les classements"
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.ideachess.com/",
            "note_fr": "« Completely free! » — site entièrement gratuit, inscription gratuite pour l’ELO et les classements"
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.ideachess.com/",
            "note_fr": "« Completely free! » — site entièrement gratuit, inscription gratuite pour l’ELO et les classements"
          },
          {
            "code": "E1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.ideachess.com/",
            "note_fr": "« Completely free! » — site entièrement gratuit, inscription gratuite pour l’ELO et les classements"
          },
          {
            "code": "E2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.ideachess.com/",
            "note_fr": "« Completely free! » — site entièrement gratuit, inscription gratuite pour l’ELO et les classements"
          },
          {
            "code": "F1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.ideachess.com/",
            "note_fr": "« Completely free! » — site entièrement gratuit, inscription gratuite pour l’ELO et les classements"
          },
          {
            "code": "F3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.ideachess.com/",
            "note_fr": "« Completely free! » — site entièrement gratuit, inscription gratuite pour l’ELO et les classements"
          },
          {
            "code": "G3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.ideachess.com/",
            "note_fr": "« Completely free! » — site entièrement gratuit, inscription gratuite pour l’ELO et les classements"
          },
          {
            "code": "G4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.ideachess.com/",
            "note_fr": "« Completely free! » — site entièrement gratuit, inscription gratuite pour l’ELO et les classements"
          },
          {
            "code": "H2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://play.google.com/store/apps/details?id=com.cisana.ideatactics",
            "note_fr": "critère informationnel (note et avis publics du store)"
          },
          {
            "code": "H3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.ideachess.com/",
            "note_fr": "« Completely free! » — site entièrement gratuit, inscription gratuite pour l’ELO et les classements"
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.ideachess.com/",
            "note_fr": "« Completely free! » — site entièrement gratuit, inscription gratuite pour l’ELO et les classements"
          },
          {
            "code": "I1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.ideachess.com/",
            "note_fr": "« Completely free! » — site entièrement gratuit, inscription gratuite pour l’ELO et les classements"
          },
          {
            "code": "J3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.ideachess.com/",
            "note_fr": "« Completely free! » — site entièrement gratuit, inscription gratuite pour l’ELO et les classements"
          },
          {
            "code": "K1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "K2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.ideachess.com/cookie_policy",
            "note_fr": "critère informationnel : vaut en gratuit comme en payant"
          },
          {
            "code": "K3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.ideachess.com/",
            "note_fr": "« Completely free! » — site entièrement gratuit, inscription gratuite pour l’ELO et les classements"
          }
        ]
      }
    },
    {
      "slug": "chessfox",
      "name": "ChessFox",
      "url": "https://chessfox.com/",
      "kind": "platform",
      "type": {
        "en": "Online courses from a single coach",
        "fr": "Cours en ligne d’un coach individuel"
      },
      "price": {
        "en": "Free web lessons; Gumroad products $10–39 each, \"VISUALWIZE Mega Bundle\" $117 ≈ €108 (one-off payment, shown at $78 on promo). Rule: list price of the full bundle as the annual equivalent.",
        "fr": "Cours web gratuits ; produits Gumroad 10–39 $ l’unité, « VISUALWIZE Mega Bundle » 117 $ ≈ 108 € (paiement unique, affiché 78 $ en promo). Règle : prix catalogue du bundle complet comme équivalent annuel."
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 2.27,
      "unweighted_score": 2.03,
      "category_scores": {
        "A": 0,
        "B": 2.2,
        "C": 2.2,
        "D": 5.8,
        "E": 2.5,
        "F": 4.7,
        "G": 0,
        "H": 1.3,
        "I": 0,
        "J": 2.5,
        "K": 1.1
      },
      "scores": {
        "A": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          1,
          1,
          0,
          0,
          0,
          2
        ],
        "C": [
          0,
          1,
          1,
          1,
          0,
          2,
          0,
          0,
          1
        ],
        "D": [
          3,
          1,
          2,
          1
        ],
        "E": [
          0,
          0,
          1,
          2
        ],
        "F": [
          2,
          1,
          2,
          2,
          0
        ],
        "G": [
          0,
          0,
          0,
          0
        ],
        "H": [
          1,
          0,
          0,
          0,
          1
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          0,
          0,
          0,
          3
        ],
        "K": [
          0,
          1,
          0
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 1.77,
        "criteria": [
          {
            "code": "A1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B1",
            "status": "paid",
            "quota": null,
            "source_url": "https://chessfox.gumroad.com/l/nzzjm",
            "note_fr": "« A Complete Opening Repertoire for White & Black — Simplified » vendu 39 $ sur Gumroad"
          },
          {
            "code": "B2",
            "status": "paid",
            "quota": null,
            "source_url": "https://chessfox.gumroad.com/l/nzzjm",
            "note_fr": "le répertoire (lecture passive) est un produit payant (39 $)"
          },
          {
            "code": "B3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B6",
            "status": "paid",
            "quota": null,
            "source_url": "https://chessfox.gumroad.com/l/nzzjm",
            "note_fr": "les idées d’ouverture expliquées sont dans le répertoire payant (39 $)"
          },
          {
            "code": "C1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessfox.com/chess-tactics-list/",
            "note_fr": "liste des 56 motifs tactiques gratuite sur le site ; « 300 Essential Tactical and Checkmate Patterns » payant (30 $, https://chessfox.gumroad.com/l/rdtoju)"
          },
          {
            "code": "C3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessfox.com/free-chess-course-chessfox-com/",
            "note_fr": "finales couvertes dans les cours gratuits, sans compte"
          },
          {
            "code": "C4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessfox.com/",
            "note_fr": "cours gratuits (Beginners, Intermediate) et 10-Day Challenge, « No login or quota restrictions »"
          },
          {
            "code": "C5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C6",
            "status": "paid",
            "quota": null,
            "source_url": "https://chessfox.gumroad.com/l/ZJRr",
            "note_fr": "Visualwize Mega Bundle 117 $ (promo 78 $), TRC Calculation Method 15 $, Blindfold Course 10 $ ; seul le défi 10 jours (calcul/évaluation) est gratuit sur le site"
          },
          {
            "code": "C7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C9",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessfox.com/",
            "note_fr": "10-Day Chess Challenge gratuit, sans compte"
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessfox.com/",
            "note_fr": "critère informationnel"
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessfox.gumroad.com/l/ZJRr",
            "note_fr": "critère informationnel — 117 $ affiché (promo 78 $)"
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessfox.com/products/",
            "note_fr": "critère informationnel — « 30-Day Money Back Guarantee on all my products »"
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessfox.com/products/",
            "note_fr": "critère informationnel — 6 produits à l’unité"
          },
          {
            "code": "E1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessfox.com/about/",
            "note_fr": "critère informationnel"
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessfox.com/",
            "note_fr": "critère informationnel"
          },
          {
            "code": "F1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessfox.com/",
            "note_fr": "cours gratuits étiquetés « Beginners » et « Intermediate Players »"
          },
          {
            "code": "F2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessfox.com/about/",
            "note_fr": "critère informationnel"
          },
          {
            "code": "F3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessfox.com/",
            "note_fr": "cours texte + vidéos YouTube gratuits"
          },
          {
            "code": "F4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessfox.com/free-chess-course-chessfox-com/",
            "note_fr": "« 7 Skills Chess Training Model » et cours séquencés gratuits (copie du modèle contre inscription gratuite)"
          },
          {
            "code": "F5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessfox.com/",
            "note_fr": "critère informationnel"
          },
          {
            "code": "H2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessfox.com/",
            "note_fr": "critère informationnel ; site accessible sans compte (les produits téléchargeables, eux, sont payants)"
          },
          {
            "code": "I1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessfox.com/",
            "note_fr": "critère informationnel"
          },
          {
            "code": "K1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "K2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessfox.com/privacy-policy/",
            "note_fr": "critère informationnel"
          },
          {
            "code": "K3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          }
        ]
      }
    },
    {
      "slug": "fritz-21-chessbase",
      "name": "Fritz 21 (ChessBase)",
      "url": "https://shop.chessbase.com/en/products/fritz_21",
      "kind": "platform",
      "type": {
        "en": "desktop engine software with training",
        "fr": "logiciel moteur desktop avec entraînement"
      },
      "price": {
        "en": "€69.90 one-off purchase (https://shop.chessbase.com/en/products/fritz_21) + 3 months of Premium account included, then €49.90/yr optional (https://account.chessbase.com/en/matrix); rule: price shown (perpetual licence)",
        "fr": "69,90 € achat unique (https://shop.chessbase.com/en/products/fritz_21) + 3 mois de compte Premium inclus, puis 49,90 €/an facultatif (https://account.chessbase.com/en/matrix) ; règle : prix affiché (licence perpétuelle)"
      },
      "languages": 5,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 2.26,
      "unweighted_score": 2.29,
      "category_scores": {
        "A": 1.3,
        "B": 3.3,
        "C": 1.9,
        "D": 2.5,
        "E": 2.5,
        "F": 1.3,
        "G": 3.3,
        "H": 3.3,
        "I": 0,
        "J": 2.5,
        "K": 3.3
      },
      "scores": {
        "A": [
          1,
          1,
          0,
          0,
          1,
          0,
          0,
          0
        ],
        "B": [
          1,
          2,
          0,
          0,
          2,
          1
        ],
        "C": [
          0,
          1,
          1,
          0,
          0,
          2,
          1,
          0,
          0
        ],
        "D": [
          0,
          2,
          1,
          0
        ],
        "E": [
          0,
          0,
          1,
          2
        ],
        "F": [
          0,
          0,
          1,
          0,
          1
        ],
        "G": [
          1,
          2,
          1,
          0
        ],
        "H": [
          0,
          0,
          2,
          0,
          3
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          0,
          1,
          0,
          2
        ],
        "K": [
          2,
          0,
          1
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": null
    },
    {
      "slug": "chess-log-ios",
      "name": "Chess Log (iOS)",
      "url": "https://apps.apple.com/us/app/chess-log/id6737934787",
      "kind": "platform",
      "type": {
        "en": "game journal with Lichess explorer",
        "fr": "journal de parties avec explorateur Lichess"
      },
      "price": {
        "en": "€0 — free with no in-app purchase (https://apps.apple.com/us/app/chess-log/id6737934787); rule: free",
        "fr": "0 € — gratuit sans achat intégré (https://apps.apple.com/us/app/chess-log/id6737934787) ; règle : gratuit"
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 2.26,
      "unweighted_score": 2.13,
      "category_scores": {
        "A": 0.8,
        "B": 1.1,
        "C": 0,
        "D": 10,
        "E": 2.5,
        "F": 1.3,
        "G": 0,
        "H": 1.3,
        "I": 2.5,
        "J": 1.7,
        "K": 2.2
      },
      "scores": {
        "A": [
          1,
          1,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          0,
          0,
          0,
          0,
          2,
          0
        ],
        "C": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "D": [
          3,
          3,
          3,
          3
        ],
        "E": [
          0,
          0,
          1,
          2
        ],
        "F": [
          0,
          0,
          0,
          0,
          2
        ],
        "G": [
          0,
          0,
          0,
          0
        ],
        "H": [
          1,
          0,
          0,
          0,
          1
        ],
        "I": [
          0,
          1,
          1,
          1
        ],
        "J": [
          0,
          0,
          0,
          2
        ],
        "K": [
          0,
          1,
          1
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 2.26,
        "criteria": [
          {
            "code": "A1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/chess-log/id6737934787",
            "note_fr": "app affichée « Free », aucun achat intégré listé sur la fiche — tout est gratuit"
          },
          {
            "code": "A2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/chess-log/id6737934787",
            "note_fr": "app affichée « Free », aucun achat intégré listé sur la fiche — tout est gratuit"
          },
          {
            "code": "A3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/chess-log/id6737934787",
            "note_fr": "app affichée « Free », aucun achat intégré listé sur la fiche — tout est gratuit"
          },
          {
            "code": "B6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C9",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/chess-log/id6737934787",
            "note_fr": "app affichée « Free », aucun achat intégré listé sur la fiche — tout est gratuit"
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/chess-log/id6737934787",
            "note_fr": "app affichée « Free », aucun achat intégré listé sur la fiche — tout est gratuit"
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/chess-log/id6737934787",
            "note_fr": "app affichée « Free », aucun achat intégré listé sur la fiche — tout est gratuit"
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/chess-log/id6737934787",
            "note_fr": "app affichée « Free », aucun achat intégré listé sur la fiche — tout est gratuit"
          },
          {
            "code": "E1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/chess-log/id6737934787",
            "note_fr": "app affichée « Free », aucun achat intégré listé sur la fiche — tout est gratuit"
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/chess-log/id6737934787",
            "note_fr": "app affichée « Free », aucun achat intégré listé sur la fiche — tout est gratuit"
          },
          {
            "code": "F1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/chess-log/id6737934787",
            "note_fr": "app affichée « Free », aucun achat intégré listé sur la fiche — tout est gratuit"
          },
          {
            "code": "G1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/chess-log/id6737934787",
            "note_fr": "app affichée « Free », aucun achat intégré listé sur la fiche — tout est gratuit"
          },
          {
            "code": "H2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/chess-log/id6737934787",
            "note_fr": "app affichée « Free », aucun achat intégré listé sur la fiche — tout est gratuit"
          },
          {
            "code": "I1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/chess-log/id6737934787",
            "note_fr": "app affichée « Free », aucun achat intégré listé sur la fiche — tout est gratuit"
          },
          {
            "code": "I3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/chess-log/id6737934787",
            "note_fr": "app affichée « Free », aucun achat intégré listé sur la fiche — tout est gratuit"
          },
          {
            "code": "I4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/chess-log/id6737934787",
            "note_fr": "app affichée « Free », aucun achat intégré listé sur la fiche — tout est gratuit"
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/chess-log/id6737934787",
            "note_fr": "app affichée « Free », aucun achat intégré listé sur la fiche — tout est gratuit"
          },
          {
            "code": "K1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "K2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/chess-log/id6737934787",
            "note_fr": "app affichée « Free », aucun achat intégré listé sur la fiche — tout est gratuit"
          },
          {
            "code": "K3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/chess-log/id6737934787",
            "note_fr": "app affichée « Free », aucun achat intégré listé sur la fiche — tout est gratuit"
          }
        ]
      }
    },
    {
      "slug": "udemy-offre-echecs",
      "name": "Udemy (offre échecs)",
      "url": "https://www.udemy.com/topic/chess/",
      "kind": "platform",
      "type": {
        "en": "video course marketplace",
        "fr": "place de marché de cours vidéo"
      },
      "price": {
        "en": "$109.99 (one-off purchase of the top-rated course \"Complete Guide to Chess Tactics\", price shown) ≈ €101; Personal Plan $13/mo (12 × ≈ €143), curated selection with no guarantee that chess is included",
        "fr": "109,99 $ (achat unique du cours le mieux noté « Complete Guide to Chess Tactics », prix affiché) ≈ 101 € ; Personal Plan 13 $/mois (12 × ≈ 143 €), sélection curatée sans garantie d’inclure les échecs"
      },
      "languages": 13,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 2.24,
      "unweighted_score": 2.44,
      "category_scores": {
        "A": 0,
        "B": 2.8,
        "C": 1.1,
        "D": 3.3,
        "E": 2.5,
        "F": 6,
        "G": 0,
        "H": 6.7,
        "I": 0,
        "J": 3.3,
        "K": 1.1
      },
      "scores": {
        "A": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          1,
          1,
          0,
          1,
          0,
          2
        ],
        "C": [
          0,
          0,
          1,
          1,
          0,
          0,
          0,
          0,
          1
        ],
        "D": [
          1,
          1,
          2,
          0
        ],
        "E": [
          1,
          0,
          1,
          1
        ],
        "F": [
          2,
          3,
          1,
          1,
          2
        ],
        "G": [
          0,
          0,
          0,
          0
        ],
        "H": [
          3,
          2,
          2,
          1,
          2
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          0,
          1,
          0,
          3
        ],
        "K": [
          0,
          1,
          0
        ]
      },
      "evidence_urls": {
        "A": [
          "https://www.udemy.com/topic/chess/",
          "https://www.udemy.com/topic/chess/",
          "https://www.udemy.com/topic/chess/",
          "https://www.udemy.com/topic/chess/",
          "https://www.udemy.com/topic/chess/",
          "https://www.udemy.com/topic/chess/",
          "https://www.udemy.com/topic/chess/",
          "https://www.udemy.com/topic/chess/"
        ],
        "B": [
          "https://www.udemy.com/topic/chess/",
          "https://www.udemy.com/topic/chess/",
          "https://www.udemy.com/topic/chess/",
          "https://www.udemy.com/topic/chess/",
          "https://www.udemy.com/topic/chess/",
          "https://www.udemy.com/course/the-complete-guide-to-chess-tactics/"
        ],
        "C": [
          "https://www.udemy.com/topic/chess/",
          "https://www.udemy.com/topic/chess/",
          "https://www.udemy.com/topic/chess/",
          "https://www.udemy.com/topic/chess/",
          "https://www.udemy.com/topic/chess/",
          "https://www.udemy.com/topic/chess/",
          "https://www.udemy.com/topic/chess/",
          "https://www.udemy.com/topic/chess/",
          "https://www.udemy.com/topic/chess/"
        ],
        "D": [
          "https://www.udemy.com/topic/chess/",
          "https://www.udemy.com/course/the-complete-guide-to-chess-tactics/",
          "https://www.udemy.com/course/the-complete-guide-to-chess-tactics/",
          "https://www.udemy.com/topic/chess/"
        ],
        "E": [
          "https://www.udemy.com/topic/chess/",
          "https://www.udemy.com/topic/chess/",
          "https://www.udemy.com/course/the-complete-guide-to-chess-tactics/",
          "https://www.udemy.com/topic/chess/"
        ],
        "F": [
          "https://www.udemy.com/topic/chess/",
          "https://www.udemy.com/topic/chess/",
          "https://www.udemy.com/topic/chess/",
          "https://www.udemy.com/topic/chess/",
          "https://www.udemy.com/course/the-complete-guide-to-chess-tactics/"
        ],
        "G": [
          "https://www.udemy.com/topic/chess/",
          "https://www.udemy.com/topic/chess/",
          "https://www.udemy.com/topic/chess/",
          "https://www.udemy.com/topic/chess/"
        ],
        "H": [
          "https://www.udemy.com/topic/chess/",
          "https://www.udemy.com/course/the-complete-guide-to-chess-tactics/",
          "https://www.udemy.com/topic/chess/",
          "https://www.udemy.com/topic/chess/",
          "https://www.udemy.com/personal-plan/"
        ],
        "I": [
          "https://www.udemy.com/topic/chess/",
          "https://www.udemy.com/topic/chess/",
          "https://www.udemy.com/topic/chess/",
          "https://www.udemy.com/topic/chess/"
        ],
        "J": [
          "https://www.udemy.com/topic/chess/",
          "https://www.udemy.com/course/the-complete-guide-to-chess-tactics/",
          "https://www.udemy.com/topic/chess/",
          "https://www.udemy.com/topic/chess/"
        ],
        "K": [
          "https://www.udemy.com/topic/chess/",
          "https://www.udemy.com/topic/chess/",
          "https://www.udemy.com/topic/chess/"
        ]
      },
      "sources": [
        "https://en.wikipedia.org/wiki/Udemy",
        "https://www.insidehighered.com/news/quick-takes/2026/05/14/coursera-udemy-complete-their-merger",
        "https://www.udemy.com/topic/chess/",
        "https://www.udemy.com/personal-plan/",
        "https://www.udemy.com/course/the-complete-guide-to-chess-tactics/"
      ],
      "review_url": "https://www.chesspivot.com/en/reviews/udemy-offre-echecs",
      "free_access": null
    },
    {
      "slug": "everyman-chess-e-books-interactifs",
      "name": "Everyman Chess (e-books interactifs)",
      "url": "https://www.everymanchess.com/",
      "kind": "platform",
      "type": {
        "en": "chess book publisher",
        "fr": "éditeur de livres d’échecs"
      },
      "price": {
        "en": "€24.95 per title (one-off e-book purchase, price shown on newinchess.com/everyman-chess-books; $14.99-23.99 on Forward Chess); everymanchess.com site unreachable (TLS certificate of newinchess.com)",
        "fr": "24,95 € par titre (achat unique d’un e-book, prix affiché sur newinchess.com/everyman-chess-books ; 14,99-23,99 $ sur Forward Chess) ; site everymanchess.com inaccessible (certificat TLS de newinchess.com)"
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 2.22,
      "unweighted_score": 2.44,
      "category_scores": {
        "A": 0,
        "B": 2.8,
        "C": 0.7,
        "D": 4.2,
        "E": 4.2,
        "F": 4.7,
        "G": 0,
        "H": 3.3,
        "I": 0,
        "J": 2.5,
        "K": 4.4
      },
      "scores": {
        "A": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          1,
          1,
          0,
          1,
          0,
          2
        ],
        "C": [
          0,
          0,
          1,
          1,
          0,
          0,
          0,
          0,
          0
        ],
        "D": [
          0,
          3,
          1,
          1
        ],
        "E": [
          0,
          2,
          1,
          2
        ],
        "F": [
          2,
          3,
          1,
          0,
          1
        ],
        "G": [
          0,
          0,
          0,
          0
        ],
        "H": [
          3,
          0,
          0,
          0,
          2
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          0,
          0,
          0,
          3
        ],
        "K": [
          2,
          1,
          1
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": null
    },
    {
      "slug": "chess-insights-android-trewa-tech",
      "name": "Chess Insights (Android, Trewa Tech)",
      "url": "https://play.google.com/store/apps/details?id=com.insights.chesscom",
      "kind": "platform",
      "type": {
        "en": "Android app for Chess.com/Lichess stats",
        "fr": "Appli Android de statistiques Chess.com/Lichess"
      },
      "price": {
        "en": "€0 (free with ads: \"Contains ads\", no in-app purchase listed)",
        "fr": "0 € (gratuit avec publicités : « Contains ads », aucun achat intégré listé)"
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 2.17,
      "unweighted_score": 1.81,
      "category_scores": {
        "A": 1.7,
        "B": 1.1,
        "C": 0,
        "D": 9.2,
        "E": 1.7,
        "F": 0.7,
        "G": 0,
        "H": 1.3,
        "I": 1.7,
        "J": 2.5,
        "K": 0
      },
      "scores": {
        "A": [
          2,
          0,
          1,
          0,
          0,
          0,
          1,
          0
        ],
        "B": [
          0,
          0,
          1,
          0,
          1,
          0
        ],
        "C": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "D": [
          3,
          3,
          2,
          3
        ],
        "E": [
          0,
          0,
          0,
          2
        ],
        "F": [
          0,
          0,
          0,
          0,
          1
        ],
        "G": [
          0,
          0,
          0,
          0
        ],
        "H": [
          1,
          0,
          0,
          0,
          1
        ],
        "I": [
          0,
          0,
          0,
          2
        ],
        "J": [
          0,
          0,
          0,
          3
        ],
        "K": [
          0,
          0,
          0
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 2.17,
        "criteria": [
          {
            "code": "A1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://play.google.com/store/apps/details?id=com.insights.chesscom",
            "note_fr": "app gratuite avec publicités (« Contains ads »), aucun achat intégré listé — tout est gratuit"
          },
          {
            "code": "A2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://play.google.com/store/apps/details?id=com.insights.chesscom",
            "note_fr": "app gratuite avec publicités (« Contains ads »), aucun achat intégré listé — tout est gratuit"
          },
          {
            "code": "A4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A7",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://play.google.com/store/apps/details?id=com.insights.chesscom",
            "note_fr": "app gratuite avec publicités (« Contains ads »), aucun achat intégré listé — tout est gratuit"
          },
          {
            "code": "A8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://play.google.com/store/apps/details?id=com.insights.chesscom",
            "note_fr": "app gratuite avec publicités (« Contains ads »), aucun achat intégré listé — tout est gratuit"
          },
          {
            "code": "B4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://play.google.com/store/apps/details?id=com.insights.chesscom",
            "note_fr": "app gratuite avec publicités (« Contains ads »), aucun achat intégré listé — tout est gratuit"
          },
          {
            "code": "B6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C9",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://play.google.com/store/apps/details?id=com.insights.chesscom",
            "note_fr": "app gratuite avec publicités (« Contains ads »), aucun achat intégré listé — tout est gratuit"
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://play.google.com/store/apps/details?id=com.insights.chesscom",
            "note_fr": "app gratuite avec publicités (« Contains ads »), aucun achat intégré listé — tout est gratuit"
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://play.google.com/store/apps/details?id=com.insights.chesscom",
            "note_fr": "app gratuite avec publicités (« Contains ads »), aucun achat intégré listé — tout est gratuit"
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://play.google.com/store/apps/details?id=com.insights.chesscom",
            "note_fr": "app gratuite avec publicités (« Contains ads »), aucun achat intégré listé — tout est gratuit"
          },
          {
            "code": "E1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://play.google.com/store/apps/details?id=com.insights.chesscom",
            "note_fr": "app gratuite avec publicités (« Contains ads »), aucun achat intégré listé — tout est gratuit"
          },
          {
            "code": "F1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://play.google.com/store/apps/details?id=com.insights.chesscom",
            "note_fr": "app gratuite avec publicités (« Contains ads »), aucun achat intégré listé — tout est gratuit"
          },
          {
            "code": "G1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://play.google.com/store/apps/details?id=com.insights.chesscom",
            "note_fr": "app gratuite avec publicités (« Contains ads »), aucun achat intégré listé — tout est gratuit"
          },
          {
            "code": "H2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://play.google.com/store/apps/details?id=com.insights.chesscom",
            "note_fr": "app gratuite avec publicités (« Contains ads »), aucun achat intégré listé — tout est gratuit"
          },
          {
            "code": "I1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://play.google.com/store/apps/details?id=com.insights.chesscom",
            "note_fr": "app gratuite avec publicités (« Contains ads »), aucun achat intégré listé — tout est gratuit"
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://play.google.com/store/apps/details?id=com.insights.chesscom",
            "note_fr": "app gratuite avec publicités (« Contains ads »), aucun achat intégré listé — tout est gratuit"
          },
          {
            "code": "K1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "K2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "K3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          }
        ]
      }
    },
    {
      "slug": "killer-chess-training",
      "name": "Killer Chess Training",
      "url": "https://killerchesstraining.com/",
      "kind": "platform",
      "type": {
        "en": "daily live GM lessons, subscription",
        "fr": "cours live quotidiens par GM, abonnement"
      },
      "price": {
        "en": "€765/yr (annual price shown, killerchesstraining.com/shop); monthly €149/mo; paid 7-day trial €49",
        "fr": "765 €/an (annuel affiché, killerchesstraining.com/shop) ; mensuel 149 €/mois ; essai 7 jours payant 49 €"
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 2.17,
      "unweighted_score": 2.51,
      "category_scores": {
        "A": 0,
        "B": 2.8,
        "C": 2.2,
        "D": 0.8,
        "E": 5,
        "F": 6.7,
        "G": 0.8,
        "H": 1.3,
        "I": 0,
        "J": 5.8,
        "K": 2.2
      },
      "scores": {
        "A": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          1,
          1,
          0,
          1,
          0,
          2
        ],
        "C": [
          0,
          1,
          1,
          1,
          0,
          0,
          1,
          0,
          2
        ],
        "D": [
          0,
          0,
          1,
          0
        ],
        "E": [
          1,
          2,
          1,
          2
        ],
        "F": [
          1,
          3,
          2,
          1,
          3
        ],
        "G": [
          0,
          0,
          0,
          1
        ],
        "H": [
          1,
          0,
          0,
          0,
          1
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          3,
          2,
          0,
          2
        ],
        "K": [
          0,
          2,
          0
        ]
      },
      "evidence_urls": {
        "A": [
          "https://killerchesstraining.com/",
          "https://killerchesstraining.com/",
          "https://killerchesstraining.com/",
          "https://killerchesstraining.com/",
          "https://killerchesstraining.com/",
          "https://killerchesstraining.com/",
          "https://killerchesstraining.com/",
          "https://killerchesstraining.com/"
        ],
        "B": [
          "https://killerchesstraining.com/",
          "https://killerchesstraining.com/",
          "https://killerchesstraining.com/",
          "https://killerchesstraining.com/",
          "https://killerchesstraining.com/",
          "https://killerchesstraining.com/"
        ],
        "C": [
          "https://killerchesstraining.com/",
          "https://killerchesstraining.com/",
          "https://killerchesstraining.com/",
          "https://killerchesstraining.com/shop",
          "https://killerchesstraining.com/",
          "https://killerchesstraining.com/",
          "https://killerchesstraining.com/",
          "https://killerchesstraining.com/",
          "https://killerchesstraining.com/"
        ],
        "D": [
          "https://killerchesstraining.com/",
          "https://killerchesstraining.com/shop/",
          "https://killerchesstraining.com/terms-of-use/",
          "https://killerchesstraining.com/shop"
        ],
        "E": [
          "https://killerchesstraining.com/",
          "https://killerchesstraining.com/",
          "https://killerchesstraining.com/",
          "https://killerchesstraining.com/"
        ],
        "F": [
          "https://killerchesstraining.com/",
          "https://killerchesstraining.com/",
          "https://killerchesstraining.com/",
          "https://killerchesstraining.com/",
          "https://killerchesstraining.com/"
        ],
        "G": [
          "https://killerchesstraining.com/",
          "https://killerchesstraining.com/",
          "https://killerchesstraining.com/",
          "https://killerchesstraining.com/"
        ],
        "H": [
          "https://killerchesstraining.com/",
          "https://killerchesstraining.com/",
          "https://killerchesstraining.com/",
          "https://killerchesstraining.com/",
          "https://killerchesstraining.com/"
        ],
        "I": [
          "https://killerchesstraining.com/",
          "https://killerchesstraining.com/",
          "https://killerchesstraining.com/",
          "https://killerchesstraining.com/"
        ],
        "J": [
          "https://killerchesstraining.com/",
          "https://killerchesstraining.com/",
          "https://killerchesstraining.com/",
          "https://killerchesstraining.com/"
        ],
        "K": [
          "https://killerchesstraining.com/privacy-policy/",
          "https://killerchesstraining.com/privacy-policy/",
          "https://killerchesstraining.com/"
        ]
      },
      "sources": [
        "https://killerchesstraining.com/",
        "https://killerchesstraining.com/privacy-policy/",
        "https://killerchesstraining.com/shop/",
        "https://killerchesstraining.com/product/killer-chess-training-the-early-365-chess-academy-courses/",
        "https://killerchesstraining.com/2026/08/25/new-camp-coming-up-in-september/",
        "https://killerchesstraining.com/2026/06/09/new-online-camp-with-gm-boris-gelfand/",
        "https://killerchesstraining.com/2026/03/11/last-heat-of-the-club-championship-this-sunday/",
        "https://killerchesstraining.com/2025/12/31/new-years-camp-with-gm-jacob-aagaard-begins-today/",
        "https://killerchesstraining.com/2025/09/08/join-us-for-our-2026-in-person-camp/",
        "https://killerchesstraining.com/2020/12/31/new-year-new-plans-for-chess-training/",
        "https://killerchesstraining.com/2020/12/10/attacking-training-camp-with-gm-jacob-aagaard/",
        "https://killerchesstraining.com/shop",
        "https://killerchesstraining.com/terms-of-use/"
      ],
      "review_url": "https://www.chesspivot.com/en/reviews/killer-chess-training",
      "free_access": null
    },
    {
      "slug": "blitz-tactics",
      "name": "Blitz Tactics",
      "url": "https://blitztactics.com/",
      "kind": "platform",
      "type": {
        "en": "Open-source rapid puzzle trainer",
        "fr": "Entraîneur de puzzles rapides open source"
      },
      "price": {
        "en": "€0 (free, GPL-3.0 code; no paid offer shown on blitztactics.com/about)",
        "fr": "0 € (gratuit, code GPL-3.0 ; aucune offre payante affichée sur blitztactics.com/about)"
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 2.16,
      "unweighted_score": 2.14,
      "category_scores": {
        "A": 0,
        "B": 0,
        "C": 1.5,
        "D": 9.2,
        "E": 5,
        "F": 0.7,
        "G": 0,
        "H": 1.3,
        "I": 0,
        "J": 2.5,
        "K": 3.3
      },
      "scores": {
        "A": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "C": [
          0,
          2,
          1,
          0,
          0,
          0,
          0,
          1,
          0
        ],
        "D": [
          3,
          3,
          2,
          3
        ],
        "E": [
          0,
          1,
          3,
          2
        ],
        "F": [
          0,
          0,
          0,
          0,
          1
        ],
        "G": [
          0,
          0,
          0,
          0
        ],
        "H": [
          1,
          0,
          0,
          0,
          1
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          0,
          1,
          0,
          2
        ],
        "K": [
          0,
          0,
          3
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 2.16,
        "criteria": [
          {
            "code": "A1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://blitztactics.com/about",
            "note_fr": "Tous les modes de puzzles accessibles gratuitement, sans compte ni quota ; aucune offre payante."
          },
          {
            "code": "C3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://blitztactics.com/",
            "note_fr": "Set « Rook endgames » accessible librement comme tout le site."
          },
          {
            "code": "C4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C8",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://blitztactics.com/",
            "note_fr": "Mode Repetition accessible librement."
          },
          {
            "code": "C9",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://blitztactics.com/about",
            "note_fr": null
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://blitztactics.com/about",
            "note_fr": "Gratuit, aucune offre payante affichée."
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://blitztactics.com/",
            "note_fr": null
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://blitztactics.com/about",
            "note_fr": null
          },
          {
            "code": "E1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://blitztactics.com/about",
            "note_fr": null
          },
          {
            "code": "E3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/linrock/blitz-tactics",
            "note_fr": "Code source public GPL-3.0."
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://blitztactics.com/",
            "note_fr": null
          },
          {
            "code": "F1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/linrock/blitz-tactics",
            "note_fr": null
          },
          {
            "code": "G1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://blitztactics.com/",
            "note_fr": null
          },
          {
            "code": "H2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/linrock/blitz-tactics",
            "note_fr": null
          },
          {
            "code": "I1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://blitztactics.com/",
            "note_fr": null
          },
          {
            "code": "J3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://blitztactics.com/",
            "note_fr": "Classements publics, aucune mécanique payante."
          },
          {
            "code": "K1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "K2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "K3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://github.com/linrock/blitz-tactics",
            "note_fr": null
          }
        ]
      }
    },
    {
      "slug": "chessimo",
      "name": "Chessimo",
      "url": "https://www.chessimo.com/",
      "kind": "platform",
      "type": {
        "en": "spaced-repetition tactics app",
        "fr": "app tactique répétition espacée"
      },
      "price": {
        "en": "$14.99 (highest in-app purchase, App Store listing) ≈ €13.79; chessimo.com site unreachable",
        "fr": "14,99 $ (achat intégré maximal, fiche App Store) ≈ 13,79 € ; site chessimo.com inaccessible"
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 2.16,
      "unweighted_score": 2.1,
      "category_scores": {
        "A": 0,
        "B": 0,
        "C": 4.1,
        "D": 5.8,
        "E": 3.3,
        "F": 1.3,
        "G": 1.7,
        "H": 3.3,
        "I": 0,
        "J": 2.5,
        "K": 1.1
      },
      "scores": {
        "A": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "C": [
          0,
          2,
          1,
          2,
          0,
          0,
          2,
          2,
          2
        ],
        "D": [
          1,
          3,
          1,
          2
        ],
        "E": [
          1,
          0,
          1,
          2
        ],
        "F": [
          0,
          0,
          1,
          1,
          0
        ],
        "G": [
          0,
          1,
          1,
          0
        ],
        "H": [
          2,
          1,
          0,
          0,
          2
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          0,
          0,
          0,
          3
        ],
        "K": [
          0,
          1,
          0
        ]
      },
      "evidence_urls": {
        "A": [
          "https://apps.apple.com/us/app/chessimo-2-0/id960842536",
          "https://apps.apple.com/us/app/chessimo-2-0/id960842536",
          "https://apps.apple.com/us/app/chessimo-2-0/id960842536",
          "https://apps.apple.com/us/app/chessimo-2-0/id960842536",
          "https://apps.apple.com/us/app/chessimo-2-0/id960842536",
          "https://apps.apple.com/us/app/chessimo-2-0/id960842536",
          "https://apps.apple.com/us/app/chessimo-2-0/id960842536",
          "https://apps.apple.com/us/app/chessimo-2-0/id960842536"
        ],
        "B": [
          "https://apps.apple.com/us/app/chessimo-2-0/id960842536",
          "https://apps.apple.com/us/app/chessimo-2-0/id960842536",
          "https://apps.apple.com/us/app/chessimo-2-0/id960842536",
          "https://apps.apple.com/us/app/chessimo-2-0/id960842536",
          "https://apps.apple.com/us/app/chessimo-2-0/id960842536",
          "https://apps.apple.com/us/app/chessimo-2-0/id960842536"
        ],
        "C": [
          "https://apps.apple.com/us/app/chessimo-2-0/id960842536",
          "https://apps.apple.com/us/app/chessimo-2-0/id960842536",
          "https://apps.apple.com/us/app/chessimo-2-0/id960842536",
          "https://apps.apple.com/us/app/chessimo-2-0/id960842536",
          "https://apps.apple.com/us/app/chessimo-2-0/id960842536",
          "https://apps.apple.com/us/app/chessimo-2-0/id960842536",
          "https://apps.apple.com/us/app/chessimo-2-0/id960842536",
          "https://apps.apple.com/us/app/chessimo-2-0/id960842536",
          "https://apps.apple.com/us/app/chessimo-2-0/id960842536"
        ],
        "D": [
          "https://apps.apple.com/us/app/chessimo-2-0/id960842536",
          "https://apps.apple.com/us/app/chessimo-2-0/id960842536",
          "https://apps.apple.com/us/app/chessimo-2-0/id960842536",
          "https://apps.apple.com/us/app/chessimo-2-0/id960842536"
        ],
        "E": [
          "https://apps.apple.com/us/app/chessimo-2-0/id960842536",
          "https://apps.apple.com/us/app/chessimo-2-0/id960842536",
          "https://apps.apple.com/us/app/chessimo-2-0/id960842536",
          "https://apps.apple.com/us/app/chessimo-2-0/id960842536"
        ],
        "F": [
          "https://apps.apple.com/us/app/chessimo-2-0/id960842536",
          "https://apps.apple.com/us/app/chessimo-2-0/id960842536",
          "https://apps.apple.com/us/app/chessimo-2-0/id960842536",
          "https://apps.apple.com/us/app/chessimo-2-0/id960842536",
          "https://apps.apple.com/us/app/chessimo-2-0/id960842536"
        ],
        "G": [
          "https://apps.apple.com/us/app/chessimo-2-0/id960842536",
          "https://apps.apple.com/us/app/chessimo-2-0/id960842536",
          "https://apps.apple.com/us/app/chessimo-2-0/id960842536",
          "https://apps.apple.com/us/app/chessimo-2-0/id960842536"
        ],
        "H": [
          "https://apps.apple.com/us/app/chessimo-2-0/id960842536",
          "https://apps.apple.com/us/app/chessimo-2-0/id960842536",
          "https://apps.apple.com/us/app/chessimo-2-0/id960842536",
          "https://apps.apple.com/us/app/chessimo-2-0/id960842536",
          "https://apps.apple.com/us/app/chessimo-2-0/id960842536"
        ],
        "I": [
          "https://apps.apple.com/us/app/chessimo-2-0/id960842536",
          "https://apps.apple.com/us/app/chessimo-2-0/id960842536",
          "https://apps.apple.com/us/app/chessimo-2-0/id960842536",
          "https://apps.apple.com/us/app/chessimo-2-0/id960842536"
        ],
        "J": [
          "https://apps.apple.com/us/app/chessimo-2-0/id960842536",
          "https://apps.apple.com/us/app/chessimo-2-0/id960842536",
          "https://apps.apple.com/us/app/chessimo-2-0/id960842536",
          "https://apps.apple.com/us/app/chessimo-2-0/id960842536"
        ],
        "K": [
          "https://apps.apple.com/us/app/chessimo-2-0/id960842536",
          "https://apps.apple.com/us/app/chessimo-2-0/id960842536",
          "https://apps.apple.com/us/app/chessimo-2-0/id960842536"
        ]
      },
      "sources": [
        "https://apps.apple.com/us/app/chessimo-2-0/id960842536",
        "https://www.chessimo.com/",
        "https://chessimo.com/"
      ],
      "review_url": "https://www.chesspivot.com/en/reviews/chessimo",
      "free_access": null
    },
    {
      "slug": "chessgpt-ai-chess-coach",
      "name": "ChessGPT AI Chess Coach",
      "url": "https://apps.apple.com/us/app/chessgpt-ai-chess-coach/id6481724799",
      "kind": "platform",
      "type": {
        "en": "LLM coach + Stockfish on iOS",
        "fr": "coach LLM + Stockfish sur iOS"
      },
      "price": {
        "en": "\"ChessGPT+\" $4.99 per subscription (https://apps.apple.com/us/app/chessgpt-ai-chess-coach/id6481724799, periodicity not shown in the excerpt); if monthly: 12 × 4.99 = $59.88 ≈ €55/yr",
        "fr": "« ChessGPT+ » 4,99 $ par abonnement (https://apps.apple.com/us/app/chessgpt-ai-chess-coach/id6481724799, périodicité non affichée dans l’extrait) ; si mensuel : 12 × 4,99 = 59,88 $ ≈ 55 €/an"
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 2.13,
      "unweighted_score": 2,
      "category_scores": {
        "A": 2.1,
        "B": 0,
        "C": 0.7,
        "D": 6.7,
        "E": 3.3,
        "F": 2,
        "G": 1.7,
        "H": 1.3,
        "I": 2.5,
        "J": 1.7,
        "K": 0
      },
      "scores": {
        "A": [
          1,
          2,
          0,
          0,
          2,
          0,
          0,
          0
        ],
        "B": [
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "C": [
          1,
          0,
          0,
          1,
          0,
          0,
          0,
          0,
          0
        ],
        "D": [
          1,
          2,
          2,
          3
        ],
        "E": [
          0,
          0,
          2,
          2
        ],
        "F": [
          0,
          0,
          1,
          0,
          2
        ],
        "G": [
          0,
          1,
          1,
          0
        ],
        "H": [
          1,
          0,
          0,
          0,
          1
        ],
        "I": [
          0,
          1,
          1,
          1
        ],
        "J": [
          0,
          0,
          0,
          2
        ],
        "K": [
          0,
          0,
          0
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": null
    },
    {
      "slug": "chesstactics-org",
      "name": "ChessTactics.org",
      "url": "https://chesstactics.org/",
      "kind": "platform",
      "type": {
        "en": "free online tactics manual",
        "fr": "manuel de tactique gratuit en ligne"
      },
      "price": {
        "en": "Free (site) — rule: free; the equivalent course is sold on Chessable (price not read).",
        "fr": "Gratuit (site) — règle : gratuit ; le cours équivalent est vendu sur Chessable (prix non lu)."
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 2.13,
      "unweighted_score": 1.88,
      "category_scores": {
        "A": 0,
        "B": 0,
        "C": 0.4,
        "D": 10,
        "E": 3.3,
        "F": 3.3,
        "G": 0,
        "H": 2,
        "I": 0,
        "J": 1.7,
        "K": 0
      },
      "scores": {
        "A": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "C": [
          0,
          1,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "D": [
          3,
          3,
          3,
          3
        ],
        "E": [
          0,
          0,
          1,
          3
        ],
        "F": [
          1,
          1,
          2,
          1,
          0
        ],
        "G": [
          0,
          0,
          0,
          0
        ],
        "H": [
          1,
          0,
          0,
          1,
          1
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          0,
          0,
          0,
          2
        ],
        "K": [
          0,
          0,
          0
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 2.13,
        "criteria": [
          {
            "code": "A1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesstactics.org/",
            "note_fr": "« check out the basic idea for free » — tout le contenu accessible sans compte ni paiement."
          },
          {
            "code": "C3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C9",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesstactics.org/",
            "note_fr": null
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesstactics.org/",
            "note_fr": "Gratuit ; la version Chessable payante est hors périmètre."
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesstactics.org/",
            "note_fr": null
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesstactics.org/",
            "note_fr": null
          },
          {
            "code": "E1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesstactics.org/",
            "note_fr": null
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesstactics.org/",
            "note_fr": null
          },
          {
            "code": "F1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesstactics.org/",
            "note_fr": null
          },
          {
            "code": "F2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesstactics.org/",
            "note_fr": null
          },
          {
            "code": "F3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesstactics.org/",
            "note_fr": null
          },
          {
            "code": "F4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesstactics.org/",
            "note_fr": null
          },
          {
            "code": "F5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesstactics.org/",
            "note_fr": null
          },
          {
            "code": "H2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesstactics.org/",
            "note_fr": null
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesstactics.org/",
            "note_fr": null
          },
          {
            "code": "I1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chesstactics.org/",
            "note_fr": null
          },
          {
            "code": "K1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "K2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "K3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          }
        ]
      }
    },
    {
      "slug": "dr-wolf",
      "name": "Dr. Wolf",
      "url": "https://apps.apple.com/us/app/learn-chess-with-dr-wolf/id1353041020",
      "kind": "platform",
      "type": {
        "en": "beginner AI coaching mobile app",
        "fr": "app mobile de coaching IA débutant"
      },
      "price": {
        "en": "$39.99/yr ≈ €36.79 (Yearly Coaching, App Store in-app purchase, annual price shown); monthly $5.99.",
        "fr": "39,99 $/an ≈ 36,79 € (Yearly Coaching, achat intégré App Store, annuel affiché) ; mensuel 5,99 $."
      },
      "languages": 4,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 2.12,
      "unweighted_score": 2.08,
      "category_scores": {
        "A": 1.3,
        "B": 0,
        "C": 1.5,
        "D": 5.8,
        "E": 2.5,
        "F": 3.3,
        "G": 1.7,
        "H": 4,
        "I": 0,
        "J": 1.7,
        "K": 1.1
      },
      "scores": {
        "A": [
          0,
          1,
          0,
          0,
          2,
          0,
          0,
          0
        ],
        "B": [
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "C": [
          1,
          0,
          0,
          0,
          1,
          0,
          1,
          0,
          1
        ],
        "D": [
          1,
          2,
          1,
          3
        ],
        "E": [
          0,
          0,
          1,
          2
        ],
        "F": [
          1,
          0,
          1,
          1,
          2
        ],
        "G": [
          0,
          2,
          0,
          0
        ],
        "H": [
          1,
          3,
          1,
          0,
          1
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          0,
          0,
          0,
          2
        ],
        "K": [
          0,
          1,
          0
        ]
      },
      "evidence_urls": {
        "A": [
          "https://apps.apple.com/us/app/learn-chess-with-dr-wolf/id1353041020",
          "https://apps.apple.com/us/app/learn-chess-with-dr-wolf/id1353041020",
          "https://apps.apple.com/us/app/learn-chess-with-dr-wolf/id1353041020",
          "https://apps.apple.com/us/app/learn-chess-with-dr-wolf/id1353041020",
          "https://apps.apple.com/us/app/learn-chess-with-dr-wolf/id1353041020",
          "https://apps.apple.com/us/app/learn-chess-with-dr-wolf/id1353041020",
          "https://apps.apple.com/us/app/learn-chess-with-dr-wolf/id1353041020",
          "https://apps.apple.com/us/app/learn-chess-with-dr-wolf/id1353041020"
        ],
        "B": [
          "https://apps.apple.com/us/app/learn-chess-with-dr-wolf/id1353041020",
          "https://apps.apple.com/us/app/learn-chess-with-dr-wolf/id1353041020",
          "https://apps.apple.com/us/app/learn-chess-with-dr-wolf/id1353041020",
          "https://apps.apple.com/us/app/learn-chess-with-dr-wolf/id1353041020",
          "https://apps.apple.com/us/app/learn-chess-with-dr-wolf/id1353041020",
          "https://apps.apple.com/us/app/learn-chess-with-dr-wolf/id1353041020"
        ],
        "C": [
          "https://apps.apple.com/us/app/learn-chess-with-dr-wolf/id1353041020",
          "https://apps.apple.com/us/app/learn-chess-with-dr-wolf/id1353041020",
          "https://apps.apple.com/us/app/learn-chess-with-dr-wolf/id1353041020",
          "https://apps.apple.com/us/app/learn-chess-with-dr-wolf/id1353041020",
          "https://apps.apple.com/us/app/learn-chess-with-dr-wolf/id1353041020",
          "https://apps.apple.com/us/app/learn-chess-with-dr-wolf/id1353041020",
          "https://apps.apple.com/us/app/learn-chess-with-dr-wolf/id1353041020",
          "https://apps.apple.com/us/app/learn-chess-with-dr-wolf/id1353041020",
          "https://apps.apple.com/us/app/learn-chess-with-dr-wolf/id1353041020"
        ],
        "D": [
          "https://apps.apple.com/us/app/learn-chess-with-dr-wolf/id1353041020",
          "https://apps.apple.com/us/app/learn-chess-with-dr-wolf/id1353041020",
          "https://apps.apple.com/us/app/learn-chess-with-dr-wolf/id1353041020",
          "https://apps.apple.com/us/app/learn-chess-with-dr-wolf/id1353041020"
        ],
        "E": [
          "https://apps.apple.com/us/app/learn-chess-with-dr-wolf/id1353041020",
          "https://apps.apple.com/us/app/learn-chess-with-dr-wolf/id1353041020",
          "https://apps.apple.com/us/app/learn-chess-with-dr-wolf/id1353041020",
          "https://apps.apple.com/us/app/learn-chess-with-dr-wolf/id1353041020"
        ],
        "F": [
          "https://apps.apple.com/us/app/learn-chess-with-dr-wolf/id1353041020",
          "https://apps.apple.com/us/app/learn-chess-with-dr-wolf/id1353041020",
          "https://apps.apple.com/us/app/learn-chess-with-dr-wolf/id1353041020",
          "https://apps.apple.com/us/app/learn-chess-with-dr-wolf/id1353041020",
          "https://itunes.apple.com/search?term=dr+wolf+learn+chess&entity=software&country=us"
        ],
        "G": [
          "https://apps.apple.com/us/app/learn-chess-with-dr-wolf/id1353041020",
          "https://apps.apple.com/us/app/learn-chess-with-dr-wolf/id1353041020",
          "https://apps.apple.com/us/app/learn-chess-with-dr-wolf/id1353041020",
          "https://apps.apple.com/us/app/learn-chess-with-dr-wolf/id1353041020"
        ],
        "H": [
          "https://apps.apple.com/us/app/learn-chess-with-dr-wolf/id1353041020",
          "https://itunes.apple.com/search?term=dr+wolf+learn+chess&entity=software&country=us",
          "https://apps.apple.com/us/app/learn-chess-with-dr-wolf/id1353041020",
          "https://apps.apple.com/us/app/learn-chess-with-dr-wolf/id1353041020"
        ],
        "I": [
          "https://apps.apple.com/us/app/learn-chess-with-dr-wolf/id1353041020",
          "https://apps.apple.com/us/app/learn-chess-with-dr-wolf/id1353041020",
          "https://apps.apple.com/us/app/learn-chess-with-dr-wolf/id1353041020",
          "https://apps.apple.com/us/app/learn-chess-with-dr-wolf/id1353041020"
        ],
        "J": [
          "https://apps.apple.com/us/app/learn-chess-with-dr-wolf/id1353041020",
          "https://apps.apple.com/us/app/learn-chess-with-dr-wolf/id1353041020",
          "https://apps.apple.com/us/app/learn-chess-with-dr-wolf/id1353041020",
          "https://apps.apple.com/us/app/learn-chess-with-dr-wolf/id1353041020"
        ],
        "K": [
          "https://apps.apple.com/us/app/learn-chess-with-dr-wolf/id1353041020",
          "https://apps.apple.com/us/app/learn-chess-with-dr-wolf/id1353041020",
          "https://apps.apple.com/us/app/learn-chess-with-dr-wolf/id1353041020"
        ]
      },
      "sources": [
        "https://apps.apple.com/us/app/learn-chess-with-dr-wolf/id1353041020",
        "https://apps.apple.com/us/app/id1353041020",
        "https://www.chess.com/news/view/dr-wolf-joins-chess-com",
        "https://en.wikipedia.org/wiki/Chess.com"
      ],
      "review_url": "https://www.chesspivot.com/en/reviews/dr-wolf",
      "free_access": null
    },
    {
      "slug": "chess-coach-pro-kemigogames-igor-zelka",
      "name": "Chess Coach Pro (KemigoGames / Igor Zelka)",
      "url": "https://apps.apple.com/us/app/chess-coach-pro/id1490698817",
      "kind": "platform",
      "type": {
        "en": "offline themed puzzle app",
        "fr": "app hors-ligne puzzles thématiques"
      },
      "price": {
        "en": "$14.99 (one-off purchase, App Store) ≈ €13.79; €14.49 on Google Play",
        "fr": "14,99 $ (achat unique, App Store) ≈ 13,79 € ; 14,49 € sur Google Play"
      },
      "languages": 8,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 2.08,
      "unweighted_score": 2.25,
      "category_scores": {
        "A": 0,
        "B": 1.7,
        "C": 0.7,
        "D": 5.8,
        "E": 2.5,
        "F": 2.7,
        "G": 0,
        "H": 6.7,
        "I": 0,
        "J": 2.5,
        "K": 2.2
      },
      "scores": {
        "A": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          1,
          1,
          0,
          0,
          0,
          1
        ],
        "C": [
          0,
          1,
          1,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "D": [
          0,
          3,
          1,
          3
        ],
        "E": [
          0,
          0,
          1,
          2
        ],
        "F": [
          0,
          1,
          1,
          0,
          2
        ],
        "G": [
          0,
          0,
          0,
          0
        ],
        "H": [
          2,
          3,
          2,
          0,
          3
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          0,
          0,
          0,
          3
        ],
        "K": [
          0,
          2,
          0
        ]
      },
      "evidence_urls": {
        "A": [
          "https://apps.apple.com/us/app/chess-coach-pro/id1490698817",
          "https://apps.apple.com/us/app/chess-coach-pro/id1490698817",
          "https://apps.apple.com/us/app/chess-coach-pro/id1490698817",
          "https://apps.apple.com/us/app/chess-coach-pro/id1490698817",
          "https://apps.apple.com/us/app/chess-coach-pro/id1490698817",
          "https://apps.apple.com/us/app/chess-coach-pro/id1490698817",
          "https://apps.apple.com/us/app/chess-coach-pro/id1490698817",
          "https://apps.apple.com/us/app/chess-coach-pro/id1490698817"
        ],
        "B": [
          "https://play.google.com/store/apps/details?id=com.kemigogames.chesscoachpro",
          "https://apps.apple.com/us/app/chess-coach-pro/id1490698817",
          "https://apps.apple.com/us/app/chess-coach-pro/id1490698817",
          "https://apps.apple.com/us/app/chess-coach-pro/id1490698817",
          "https://apps.apple.com/us/app/chess-coach-pro/id1490698817",
          "https://apps.apple.com/us/app/chess-coach-pro/id1490698817"
        ],
        "C": [
          "https://apps.apple.com/us/app/chess-coach-pro/id1490698817",
          "https://play.google.com/store/apps/details?id=com.kemigogames.chesscoachpro",
          "https://apps.apple.com/us/app/chess-coach-pro/id1490698817",
          "https://apps.apple.com/us/app/chess-coach-pro/id1490698817",
          "https://apps.apple.com/us/app/chess-coach-pro/id1490698817",
          "https://apps.apple.com/us/app/chess-coach-pro/id1490698817",
          "https://play.google.com/store/apps/details?id=com.kemigogames.chesscoachpro",
          "https://apps.apple.com/us/app/chess-coach-pro/id1490698817",
          "https://apps.apple.com/us/app/chess-coach-pro/id1490698817"
        ],
        "D": [
          "https://apps.apple.com/us/app/chess-coach-pro/id1490698817",
          "https://apps.apple.com/us/app/chess-coach-pro/id1490698817",
          "https://apps.apple.com/us/app/chess-coach-pro/id1490698817",
          "https://apps.apple.com/us/app/chess-coach-pro/id1490698817"
        ],
        "E": [
          "https://apps.apple.com/us/app/chess-coach-pro/id1490698817",
          "https://apps.apple.com/us/app/chess-coach-pro/id1490698817",
          "https://apps.apple.com/us/app/chess-coach-pro/id1490698817",
          "https://apps.apple.com/us/app/chess-coach-pro/id1490698817"
        ],
        "F": [
          "https://apps.apple.com/us/app/chess-coach-pro/id1490698817",
          "https://apps.apple.com/us/app/chess-coach-pro/id1490698817",
          "https://apps.apple.com/us/app/chess-coach-pro/id1490698817",
          "https://apps.apple.com/us/app/chess-coach-pro/id1490698817",
          "https://apps.apple.com/us/app/chess-coach-pro/id1490698817"
        ],
        "G": [
          "https://apps.apple.com/us/app/chess-coach-pro/id1490698817",
          "https://apps.apple.com/us/app/chess-coach-pro/id1490698817",
          "https://apps.apple.com/us/app/chess-coach-pro/id1490698817",
          "https://apps.apple.com/us/app/chess-coach-pro/id1490698817"
        ],
        "H": [
          "https://apps.apple.com/us/app/chess-coach-pro/id1490698817",
          "https://play.google.com/store/apps/details?id=com.kemigogames.chesscoachpro",
          "https://apps.apple.com/us/app/chess-coach-pro/id1490698817",
          "https://apps.apple.com/us/app/chess-coach-pro/id1490698817"
        ],
        "I": [
          "https://apps.apple.com/us/app/chess-coach-pro/id1490698817",
          "https://apps.apple.com/us/app/chess-coach-pro/id1490698817",
          "https://apps.apple.com/us/app/chess-coach-pro/id1490698817",
          "https://apps.apple.com/us/app/chess-coach-pro/id1490698817"
        ],
        "J": [
          "https://apps.apple.com/us/app/chess-coach-pro/id1490698817",
          "https://apps.apple.com/us/app/chess-coach-pro/id1490698817",
          "https://apps.apple.com/us/app/chess-coach-pro/id1490698817",
          "https://apps.apple.com/us/app/chess-coach-pro/id1490698817"
        ],
        "K": [
          "https://apps.apple.com/us/app/chess-coach-pro/id1490698817",
          "https://play.google.com/store/apps/details?id=com.kemigogames.chesscoachpro",
          "https://apps.apple.com/us/app/chess-coach-pro/id1490698817"
        ]
      },
      "sources": [
        "https://apps.apple.com/us/app/chess-coach-pro/id1490698817",
        "https://play.google.com/store/apps/details?id=com.kemigogames.chesscoachpro"
      ],
      "review_url": "https://www.chesspivot.com/en/reviews/chess-coach-pro-kemigogames-igor-zelka",
      "free_access": null
    },
    {
      "slug": "icc-internet-chess-club",
      "name": "ICC (Internet Chess Club)",
      "url": "https://www.chessclub.com/",
      "kind": "platform",
      "type": {
        "en": "historic play server with puzzles",
        "fr": "serveur de jeu historique avec puzzles"
      },
      "price": {
        "en": "$69.95/yr ≈ €64.35 (Premium Yearly, annual price shown on chessclub.com/memberships); monthly $9.95.",
        "fr": "69,95 $/an ≈ 64,35 € (Premium Yearly, annuel affiché sur chessclub.com/memberships) ; mensuel 9,95 $."
      },
      "languages": 16,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 2.08,
      "unweighted_score": 2.29,
      "category_scores": {
        "A": 1.3,
        "B": 0,
        "C": 0.7,
        "D": 6.7,
        "E": 1.7,
        "F": 2,
        "G": 2.5,
        "H": 4.7,
        "I": 1.7,
        "J": 1.7,
        "K": 2.2
      },
      "scores": {
        "A": [
          0,
          1,
          0,
          0,
          0,
          0,
          1,
          1
        ],
        "B": [
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "C": [
          0,
          1,
          0,
          1,
          0,
          0,
          0,
          0,
          0
        ],
        "D": [
          2,
          2,
          1,
          3
        ],
        "E": [
          0,
          0,
          1,
          1
        ],
        "F": [
          1,
          0,
          1,
          0,
          1
        ],
        "G": [
          1,
          1,
          0,
          1
        ],
        "H": [
          3,
          1,
          2,
          0,
          1
        ],
        "I": [
          1,
          0,
          0,
          1
        ],
        "J": [
          0,
          1,
          0,
          1
        ],
        "K": [
          1,
          1,
          0
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 1.62,
        "criteria": [
          {
            "code": "A1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessclub.com/memberships",
            "note_fr": "« Games Analysis » figure dans la colonne Free du tableau des memberships ({\"free\":true,\"title\":\"Games Analysis\"})."
          },
          {
            "code": "A3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A7",
            "status": "undocumented",
            "quota": null,
            "source_url": null,
            "note_fr": "Liens « Profile »/« Statistic » visibles sur chessclub.com mais aucune page publique n’établit le statut des statistiques en gratuit."
          },
          {
            "code": "A8",
            "status": "undocumented",
            "quota": null,
            "source_url": null,
            "note_fr": "Le jeu coté 24/7 est gratuit, mais aucune page publique n’établit l’accès gratuit aux classements/comparaisons de niveau."
          },
          {
            "code": "B1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C2",
            "status": "quota-symbolic",
            "quota": "« Solve Puzzles » — Free : « Limited » / Premium : « Unlimited » ({\"free\":\"Limited\",\"title\":\"Solve Puzzles\",\"premium\":\"Unlimited\"})",
            "source_url": "https://www.chessclub.com/memberships",
            "note_fr": "« Limited » sans nombre publié → quota-symbolic par convention."
          },
          {
            "code": "C3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C4",
            "status": "paid",
            "quota": null,
            "source_url": "https://www.chessclub.com/memberships",
            "note_fr": "« Video Content » : {\"free\":false,\"premium\":true} — réservé à Premium (9,95 $/mois ou 69,95 $/an)."
          },
          {
            "code": "C5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C9",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessclub.com/memberships",
            "note_fr": "Colonne Free publiée : 24/7 chess game play, Games Analysis, Game History, Watch Live Games ; puzzles « Limited »."
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessclub.com/memberships",
            "note_fr": "« just $69.95 per year » ($5.83/monthly)."
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessclub.com/eula",
            "note_fr": "Prix affiché sur /memberships ; EULA : renouvellement auto, « all fees are non-refundable », pas d’essai ; l’offre actuelle a un vrai palier Free (pas seulement un essai)."
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessclub.com/memberships",
            "note_fr": null
          },
          {
            "code": "E1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessclub.com/fairplay",
            "note_fr": null
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://itunes.apple.com/search?term=internet+chess+club&entity=software&country=us",
            "note_fr": null
          },
          {
            "code": "F1",
            "status": "paid",
            "quota": null,
            "source_url": "https://www.chessclub.com/memberships",
            "note_fr": "Les vidéos (seul contenu de cours) sont Premium-only."
          },
          {
            "code": "F2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F3",
            "status": "paid",
            "quota": null,
            "source_url": "https://www.chessclub.com/memberships",
            "note_fr": "« Video Content » et « News and articles » : {\"free\":false} tous les deux."
          },
          {
            "code": "F4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://itunes.apple.com/search?term=internet+chess+club&entity=software&country=us",
            "note_fr": null
          },
          {
            "code": "G1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessclub.com/memberships",
            "note_fr": "« 24/7 chess game play » : {\"free\":true} — jeu en ligne inclus dans le palier Free."
          },
          {
            "code": "G2",
            "status": "undocumented",
            "quota": null,
            "source_url": null,
            "note_fr": "La fiche App Store mentionne « challenges against chess engines » mais aucune page publique n’établit le statut gratuit."
          },
          {
            "code": "G3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G4",
            "status": "undocumented",
            "quota": null,
            "source_url": null,
            "note_fr": "« Tournaments » en navigation ; aucune page publique n’établit si les tournois sont accessibles au palier Free."
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessclub.com/memberships",
            "note_fr": null
          },
          {
            "code": "H2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://itunes.apple.com/search?term=internet+chess+club&entity=software&country=us",
            "note_fr": null
          },
          {
            "code": "H3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://itunes.apple.com/search?term=internet+chess+club&entity=software&country=us",
            "note_fr": null
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessclub.com/",
            "note_fr": null
          },
          {
            "code": "I1",
            "status": "undocumented",
            "quota": null,
            "source_url": null,
            "note_fr": "Profils et statistiques de joueurs visibles en navigation ; accès en gratuit non établi par les pages publiques."
          },
          {
            "code": "I2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessclub.com/memberships",
            "note_fr": "« Game History » : {\"free\":true} — historique inclus dans le palier Free (aucun filtre documenté)."
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessclub.com/",
            "note_fr": null
          },
          {
            "code": "J3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J4",
            "status": "paid",
            "quota": null,
            "source_url": "https://www.chessclub.com/memberships",
            "note_fr": "« Missions », « Achievements », « Exclusive deals » : {\"free\":false} ; « Puzzle Quest » listé Premium (une variante app l’affiche free avec « Hints » : « Limited »)."
          },
          {
            "code": "K1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessclub.com/privacy",
            "note_fr": "« Data Portability » sur demande à [adresse de contact] — droit ouvert à tout utilisateur."
          },
          {
            "code": "K2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessclub.com/privacy",
            "note_fr": null
          },
          {
            "code": "K3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          }
        ]
      }
    },
    {
      "slug": "tornelo",
      "name": "Tornelo",
      "url": "https://tornelo.com/",
      "kind": "platform",
      "type": {
        "en": "tournament management platform",
        "fr": "plateforme de gestion de tournois"
      },
      "price": {
        "en": "€0 (free; fees only on paid transactions: 2.75% from the organiser + ~AUD 0.25/player — tornelo.com/services).",
        "fr": "0 € (gratuit ; frais uniquement sur transactions payantes : 2,75 % organisateur + ~0,25 AUD/joueur — tornelo.com/services)."
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 2.06,
      "unweighted_score": 2.21,
      "category_scores": {
        "A": 0.4,
        "B": 0,
        "C": 0,
        "D": 10,
        "E": 2.5,
        "F": 0.7,
        "G": 2.5,
        "H": 1.3,
        "I": 2.5,
        "J": 3.3,
        "K": 1.1
      },
      "scores": {
        "A": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          1
        ],
        "B": [
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "C": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "D": [
          3,
          3,
          3,
          3
        ],
        "E": [
          0,
          0,
          1,
          2
        ],
        "F": [
          0,
          0,
          1,
          0,
          0
        ],
        "G": [
          1,
          0,
          0,
          2
        ],
        "H": [
          1,
          0,
          0,
          0,
          1
        ],
        "I": [
          1,
          0,
          1,
          1
        ],
        "J": [
          0,
          1,
          1,
          2
        ],
        "K": [
          0,
          1,
          0
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 2.06,
        "criteria": [
          {
            "code": "A1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A8",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://tornelo.com/ratings/",
            "note_fr": "Classements et profils gratuits — « No fees for Organisers, Arbiters or Players »."
          },
          {
            "code": "B1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C9",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://tornelo.com/services/",
            "note_fr": "« Tornelo is free to use, always » ; « No fees for Organisers, Arbiters or Players for fair use of the platform »."
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://tornelo.com/services/",
            "note_fr": "0 € ; « We only charge fees when you process a paid transaction » (2,75 % organisateur + 25 ¢ AUD joueur)."
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://tornelo.com/services/",
            "note_fr": "« There are no Sign up or maintenance fees, nor any contracts »."
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://tornelo.com/services/",
            "note_fr": null
          },
          {
            "code": "E1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://tornelo.com/",
            "note_fr": null
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://tornelo.com/",
            "note_fr": null
          },
          {
            "code": "F1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://tornelo.com/",
            "note_fr": null
          },
          {
            "code": "F4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://tornelo.com/services/",
            "note_fr": "Jeu de tournoi en ligne gratuit pour les joueurs ; « No ads. Forever »."
          },
          {
            "code": "G2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://tornelo.com/services/",
            "note_fr": "Plateforme gratuite pour joueurs/arbitres/organisateurs ; un organisateur peut fixer un droit d’entrée (frais de transaction 2,75 % + 25 ¢ AUD seulement)."
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://tornelo.com/",
            "note_fr": null
          },
          {
            "code": "H2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://tornelo.com/",
            "note_fr": null
          },
          {
            "code": "I1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://tornelo.com/ratings/",
            "note_fr": "« All results go straight on player profiles. Players can easily share their games » — profils gratuits."
          },
          {
            "code": "I2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://tornelo.com/hybrid/",
            "note_fr": "Coup joué sur e-board « automatically recorded on the virtual board » — inclus dans la plateforme gratuite."
          },
          {
            "code": "I4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://tornelo.com/ratings/",
            "note_fr": null
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://tornelo.com/",
            "note_fr": null
          },
          {
            "code": "J3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://tornelo.com/services/",
            "note_fr": "Gratuit pour organisateurs et arbitres, sans contrat."
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://tornelo.com/services/",
            "note_fr": "« No ads. Forever » ; aucune monnaie ni relance."
          },
          {
            "code": "K1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "K2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://tornelo.com/privacy/",
            "note_fr": null
          },
          {
            "code": "K3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          }
        ]
      }
    },
    {
      "slug": "sparkchess",
      "name": "SparkChess",
      "url": "https://www.sparkchess.com/",
      "kind": "platform",
      "type": {
        "en": "Play against bots and multiplayer",
        "fr": "Jeu contre bots et multijoueur"
      },
      "price": {
        "en": "One-off purchase ≈ €23 (SparkChess Pro iOS $24.99); Premium Live subscription: not available (amounts behind sign-in).",
        "fr": "Achat unique ≈ 23 € (SparkChess Pro iOS 24,99 $) ; abonnement Premium Live : non disponible (montants derrière la connexion)."
      },
      "languages": 8,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 2.04,
      "unweighted_score": 2.35,
      "category_scores": {
        "A": 0.4,
        "B": 0,
        "C": 1.1,
        "D": 5.8,
        "E": 1.7,
        "F": 4,
        "G": 3.3,
        "H": 5.3,
        "I": 1.7,
        "J": 2.5,
        "K": 0
      },
      "scores": {
        "A": [
          0,
          1,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "C": [
          0,
          1,
          1,
          1,
          0,
          0,
          0,
          0,
          0
        ],
        "D": [
          2,
          3,
          1,
          1
        ],
        "E": [
          0,
          0,
          0,
          2
        ],
        "F": [
          1,
          0,
          2,
          1,
          2
        ],
        "G": [
          1,
          2,
          1,
          0
        ],
        "H": [
          3,
          1,
          2,
          0,
          2
        ],
        "I": [
          0,
          0,
          1,
          1
        ],
        "J": [
          0,
          2,
          0,
          1
        ],
        "K": [
          0,
          0,
          0
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 1.56,
        "criteria": [
          {
            "code": "A1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A2",
            "status": "undocumented",
            "quota": null,
            "source_url": null,
            "note_fr": "Boutons « Coach »/« Analyse » visibles sur le site ; learn-chess.html place l’« AI coach » dans Premium ; aucune page publique n’établit le statut de l’analyse en gratuit."
          },
          {
            "code": "A3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.sparkchess.com/chess-puzzles.html",
            "note_fr": "Puzzles (Journey/Rush/Survival + puzzle du jour) jouables sur le site gratuit ; aucun quota publié — FAQ : Journey = « 5 tiers (Beginner to Master) × 10 levels × 8 puzzles each. No timer, unlimited retries per puzzle »."
          },
          {
            "code": "C3",
            "status": "paid",
            "quota": null,
            "source_url": "https://www.sparkchess.com/faq.html",
            "note_fr": "« SparkChess Premium includes over 30 lessons on basic topics ranging from rules to openings and endgames » — leçons de finales réservées à Premium."
          },
          {
            "code": "C4",
            "status": "paid",
            "quota": null,
            "source_url": "https://www.sparkchess.com/learn-chess.html",
            "note_fr": "« with SparkChess Premium, which features an Opening Explorer…, 30 interactive lessons and even an AI coach »."
          },
          {
            "code": "C5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C9",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.sparkchess.com/faq.html",
            "note_fr": null
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/sparkchess-pro/id398133128",
            "note_fr": "Pro iOS 24,99 $ achat unique ; prix Premium Live non affiché avant connexion."
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.sparkchess.com/faq.html",
            "note_fr": "« 30 Day Money Back Guarantee »."
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.sparkchess.com/chess-support.html",
            "note_fr": null
          },
          {
            "code": "E1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.sparkchess.com/",
            "note_fr": null
          },
          {
            "code": "F1",
            "status": "paid",
            "quota": null,
            "source_url": "https://www.sparkchess.com/faq.html",
            "note_fr": "Les leçons (seul contenu de cours) sont dans Premium."
          },
          {
            "code": "F2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F3",
            "status": "paid",
            "quota": null,
            "source_url": "https://www.sparkchess.com/faq.html",
            "note_fr": "Les 30 leçons interactives sont Premium ; restent gratuits les articles texte et les puzzles."
          },
          {
            "code": "F4",
            "status": "paid",
            "quota": null,
            "source_url": "https://www.sparkchess.com/learn-chess.html",
            "note_fr": "La progression publiée (leçons ordonnées) appartient à Premium."
          },
          {
            "code": "F5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/sparkchess/id1266183605",
            "note_fr": null
          },
          {
            "code": "G1",
            "status": "quota-symbolic",
            "quota": "« Unlimited number of daily games (free accounts are dynamically limited to conserve resources); » — et « the most likely cause is that you’ve exceeded the maximum number of daily matches »",
            "source_url": "https://www.sparkchess.com/faq.html",
            "note_fr": "Plafond quotidien « dynamique », aucun nombre publié → quota-symbolic par convention. Jeu multijoueur gratuit avec pub par ailleurs."
          },
          {
            "code": "G2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.sparkchess.com/faq.html",
            "note_fr": "Mode solo contre Cody/Claire/Boris/Guru gratuit, y compris hors-ligne : « You can play in single-player mode without an internet connection »."
          },
          {
            "code": "G3",
            "status": "undocumented",
            "quota": null,
            "source_url": null,
            "note_fr": "La FAQ décrit l’usage du Board Editor sans le rattacher à un palier ; les pages publiques n’établissent pas son statut dans la version web gratuite."
          },
          {
            "code": "G4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.sparkchess.com/faq.html",
            "note_fr": null
          },
          {
            "code": "H2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/sparkchess-pro/id398133128",
            "note_fr": null
          },
          {
            "code": "H3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.sparkchess.com/",
            "note_fr": null
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.sparkchess.com/faq.html",
            "note_fr": "« You can play in single-player mode without an internet connection » — gratuit."
          },
          {
            "code": "I1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I3",
            "status": "undocumented",
            "quota": null,
            "source_url": null,
            "note_fr": "Board Editor + import PGN décrits, mais leur disponibilité dans la version web gratuite n’est pas établie par les pages publiques."
          },
          {
            "code": "I4",
            "status": "paid",
            "quota": null,
            "source_url": "https://www.sparkchess.com/faq.html",
            "note_fr": "« paying customers do enjoy extra benefits, including creating and managing teams, stats and history » ; invités : « They have no stats or game history »."
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.sparkchess.com/",
            "note_fr": "Multijoueur gratuit ; la création d’équipes est réservée à Premium (« Creating teams is only possible in SparkChess Premium »)."
          },
          {
            "code": "J3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.sparkchess.com/faq.html",
            "note_fr": "Mécaniques visibles publiquement : score plafonné à 2 000 points en gratuit (« free accounts are limited to 2000 points »), bonus de série quotidien, purge des comptes inactifs."
          },
          {
            "code": "K1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "K2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "K3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          }
        ]
      }
    },
    {
      "slug": "cute-chess",
      "name": "Cute Chess",
      "url": "https://cutechess.com/",
      "kind": "engine",
      "type": {
        "en": "Open-source GUI and CLI for engines",
        "fr": "GUI et CLI open source pour moteurs"
      },
      "price": {
        "en": "€0 (free software GPL-3.0, github.com/cutechess/cutechess)",
        "fr": "0 € (logiciel libre GPL-3.0, github.com/cutechess/cutechess)"
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": false,
      "overall_score": null,
      "unweighted_score": null,
      "category_scores": {
        "A": 0,
        "B": 0,
        "C": 0,
        "D": 9.2,
        "E": 4.2,
        "F": 1.3,
        "G": 0.8,
        "H": 2,
        "I": 0,
        "J": 2.5,
        "K": 5.6
      },
      "scores": {
        "A": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "C": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "D": [
          3,
          3,
          2,
          3
        ],
        "E": [
          0,
          0,
          3,
          2
        ],
        "F": [
          0,
          0,
          0,
          0,
          2
        ],
        "G": [
          0,
          1,
          0,
          0
        ],
        "H": [
          0,
          0,
          0,
          0,
          3
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          0,
          1,
          0,
          2
        ],
        "K": [
          2,
          0,
          3
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": null
    },
    {
      "slug": "lumbra-s-gigabase",
      "name": "Lumbra's Gigabase",
      "url": "https://lumbrasgigabase.com/en/",
      "kind": "platform",
      "type": {
        "en": "free downloadable game database",
        "fr": "base de parties téléchargeable gratuite"
      },
      "price": {
        "en": "Free (donations) — lumbrasgigabase.com/en: free download. NB: site unreachable on 2026-08-30 (ECONNRESET ×3, archive inaccessible); facts carried over from the July 2026 visit (lot11-notes.md).",
        "fr": "Gratuit (dons) — lumbrasgigabase.com/en : téléchargement libre. NB : site injoignable le 30/08/2026 (ECONNRESET ×3, archive inaccessible) ; faits repris de la consultation de juillet 2026 (lot11-notes.md)."
      },
      "languages": 2,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 2.03,
      "unweighted_score": 1.92,
      "category_scores": {
        "A": 0,
        "B": 1.7,
        "C": 0,
        "D": 9.2,
        "E": 2.5,
        "F": 0,
        "G": 0,
        "H": 2.7,
        "I": 0,
        "J": 1.7,
        "K": 3.3
      },
      "scores": {
        "A": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          0,
          0,
          0,
          1,
          2,
          0
        ],
        "C": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "D": [
          3,
          3,
          2,
          3
        ],
        "E": [
          0,
          0,
          1,
          2
        ],
        "F": [
          0,
          0,
          0,
          0,
          0
        ],
        "G": [
          0,
          0,
          0,
          0
        ],
        "H": [
          0,
          0,
          1,
          0,
          3
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          0,
          0,
          0,
          2
        ],
        "K": [
          2,
          0,
          1
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 2.03,
        "criteria": [
          {
            "code": "A1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "A8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "B4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lumbrasgigabase.com/en/",
            "note_fr": null
          },
          {
            "code": "B5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lumbrasgigabase.com/en/",
            "note_fr": "Base ~10,3 M OTB + 7,2 M en ligne téléchargeable gratuitement (PGN + Scid), explorée dans un logiciel hôte."
          },
          {
            "code": "B6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "C9",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lumbrasgigabase.com/en/",
            "note_fr": "Téléchargement gratuit, contribution volontaire « Buy Me A Coffee » facultative."
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lumbrasgigabase.com/en/",
            "note_fr": null
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lumbrasgigabase.com/en/",
            "note_fr": null
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lumbrasgigabase.com/en/",
            "note_fr": null
          },
          {
            "code": "E1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "E3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lumbrasgigabase.com/en/",
            "note_fr": null
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lumbrasgigabase.com/en/",
            "note_fr": null
          },
          {
            "code": "F1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "F5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "G4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lumbrasgigabase.com/en/",
            "note_fr": null
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lumbrasgigabase.com/en/",
            "note_fr": "Fichiers PGN/Scid utilisés hors-ligne dans un logiciel local ; mise à jour « the first Tuesday of every month »."
          },
          {
            "code": "I1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "I4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lumbrasgigabase.com/en/",
            "note_fr": null
          },
          {
            "code": "K1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lumbrasgigabase.com/en/",
            "note_fr": "Le produit est lui-même un export PGN/Scid libre."
          },
          {
            "code": "K2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": null
          },
          {
            "code": "K3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://lumbrasgigabase.com/en/",
            "note_fr": "Format PGN standard ; pas d’API ni de code publié, mais l’information est publique."
          }
        ]
      }
    },
    {
      "slug": "chess-university-kostya-kavutskiy",
      "name": "Chess University (Kostya Kavutskiy)",
      "url": "https://chessuniversity.com",
      "kind": "platform",
      "type": {
        "en": "Video course store sorted by ELO level",
        "fr": "Boutique de cours vidéo par niveau ELO"
      },
      "price": {
        "en": "€138 (Mega Bundle 2025 at $150 = one-off purchase of every course; individual courses $9-85; no subscription; $1 ≈ €0.92)",
        "fr": "138 € (Mega Bundle 2025 à 150 $ = achat unique de tous les cours ; cours individuels 9-85 $ ; aucun abonnement ; 1 $ ≈ 0,92 €)"
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 1.99,
      "unweighted_score": 2.17,
      "category_scores": {
        "A": 0,
        "B": 2.8,
        "C": 1.5,
        "D": 3.3,
        "E": 1.7,
        "F": 5.3,
        "G": 0,
        "H": 1.3,
        "I": 0,
        "J": 5.8,
        "K": 2.2
      },
      "scores": {
        "A": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          1,
          1,
          0,
          1,
          0,
          2
        ],
        "C": [
          0,
          0,
          1,
          1,
          0,
          0,
          1,
          0,
          1
        ],
        "D": [
          1,
          1,
          1,
          1
        ],
        "E": [
          1,
          0,
          0,
          1
        ],
        "F": [
          2,
          3,
          1,
          1,
          1
        ],
        "G": [
          0,
          0,
          0,
          0
        ],
        "H": [
          1,
          0,
          0,
          0,
          1
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          3,
          1,
          0,
          3
        ],
        "K": [
          1,
          1,
          0
        ]
      },
      "evidence_urls": {
        "A": [
          "https://chessuniversity.com",
          "https://chessuniversity.com",
          "https://chessuniversity.com",
          "https://chessuniversity.com",
          "https://chessuniversity.com",
          "https://chessuniversity.com",
          "https://chessuniversity.com",
          "https://chessuniversity.com"
        ],
        "B": [
          "https://chessuniversity.com/collections/all",
          "https://chessuniversity.com",
          "https://chessuniversity.com",
          "https://chessuniversity.com/collections/all",
          "https://chessuniversity.com",
          "https://chessuniversity.com/collections/all"
        ],
        "C": [
          "https://chessuniversity.com",
          "https://chessuniversity.com/collections/all",
          "https://chessuniversity.com/collections/all",
          "https://chessuniversity.com/collections/all",
          "https://chessuniversity.com",
          "https://chessuniversity.com",
          "https://chessuniversity.com/collections/all",
          "https://chessuniversity.com",
          "https://chessuniversity.com/collections/all"
        ],
        "D": [
          "https://chessuniversity.com/collections/all",
          "https://chessuniversity.com",
          "https://chessuniversity.com/policies/refund-policy",
          "https://chessuniversity.com/collections/all"
        ],
        "E": [
          "https://chessuniversity.com/pages/about-chess-university",
          "https://chessuniversity.com",
          "https://chessuniversity.com",
          "https://chessuniversity.com/pages/about-chess-university"
        ],
        "F": [
          "https://chessuniversity.com/collections/all",
          "https://chessuniversity.com/collections/all",
          "https://chessuniversity.com/collections/all",
          "https://chessuniversity.com/pages/about-chess-university",
          "https://chessuniversity.com"
        ],
        "G": [
          "https://chessuniversity.com",
          "https://chessuniversity.com",
          "https://chessuniversity.com",
          "https://chessuniversity.com"
        ],
        "H": [
          "https://chessuniversity.com",
          "https://chessuniversity.com",
          "https://chessuniversity.com",
          "https://chessuniversity.com",
          "https://chessuniversity.com"
        ],
        "I": [
          "https://chessuniversity.com",
          "https://chessuniversity.com",
          "https://chessuniversity.com",
          "https://chessuniversity.com"
        ],
        "J": [
          "https://chessuniversity.com/collections/all",
          "https://chessuniversity.com/pages/about-chess-university",
          "https://chessuniversity.com",
          "https://chessuniversity.com"
        ],
        "K": [
          "https://chessuniversity.com/policies/privacy-policy",
          "https://chessuniversity.com/policies/privacy-policy",
          "https://chessuniversity.com"
        ]
      },
      "sources": [
        "https://chessuniversity.com",
        "https://chessuniversity.com/pages/about-chess-university",
        "https://chessuniversity.com/policies/privacy-policy",
        "https://chessuniversity.com/policies/terms-of-service",
        "https://chessuniversity.com/policies/refund-policy",
        "https://chessuniversity.com/collections/all",
        "https://chessuniversity.com/blogs/chess-news/kairav-joshi-sues-chess-com",
        "https://chessuniversity.com/blogs/chess-news"
      ],
      "review_url": "https://www.chesspivot.com/en/reviews/chess-university-kostya-kavutskiy",
      "free_access": null
    },
    {
      "slug": "blitzstream",
      "name": "Blitzstream",
      "url": "https://blitzstream.club/",
      "kind": "platform",
      "type": {
        "en": "French community club, monthly masterclass",
        "fr": "Club communautaire FR, masterclass mensuelle"
      },
      "price": {
        "en": "Free (\"Le Club Blitzstream (Gratuit)\"), premium offer announced as under construction, no price",
        "fr": "Gratuit (« Le Club Blitzstream (Gratuit) »), offre premium annoncée en construction, aucun prix"
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 1.98,
      "unweighted_score": 2.07,
      "category_scores": {
        "A": 0,
        "B": 0,
        "C": 0.4,
        "D": 9.2,
        "E": 1.7,
        "F": 3.3,
        "G": 0.8,
        "H": 1.3,
        "I": 0,
        "J": 5,
        "K": 1.1
      },
      "scores": {
        "A": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "C": [
          0,
          0,
          0,
          1,
          0,
          0,
          0,
          0,
          0
        ],
        "D": [
          3,
          3,
          2,
          3
        ],
        "E": [
          0,
          0,
          0,
          2
        ],
        "F": [
          1,
          2,
          1,
          0,
          1
        ],
        "G": [
          0,
          0,
          0,
          1
        ],
        "H": [
          1,
          0,
          0,
          0,
          1
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          2,
          2,
          0,
          2
        ],
        "K": [
          0,
          1,
          0
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 1.98,
        "criteria": [
          {
            "code": "A1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "A2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "A3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "A4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "A5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "A7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "A8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "B1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "B2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "B3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "B4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "B5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "B6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "C1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "C2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "C3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "C4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.skool.com/blitzstream-6028/about",
            "note_fr": "Catalogue vidéo des MasterClasses inclus dans le club gratuit (« Le Club Blitzstream (Gratuit) », « accès privilégié à notre catalogue vidéo »)."
          },
          {
            "code": "C5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "C6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "C7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "C8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "C9",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.skool.com/blitzstream-6028/about",
            "note_fr": "Informationnel — tout le club est gratuit : « Le Club Blitzstream (Gratuit) »."
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.skool.com/blitzstream-6028/about",
            "note_fr": "Informationnel — 0 € ; l'offre premium annoncée (« une offre premium adaptée à vos attentes ») n'existe pas encore."
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.skool.com/blitzstream-6028/about",
            "note_fr": "Informationnel — gratuité affichée, adhésion/désinscription en ligne via Skool."
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.skool.com/blitzstream-6028/about",
            "note_fr": "Informationnel — un seul palier, gratuit."
          },
          {
            "code": "E1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "E2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "E3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.skool.com/blitzstream-6028/about",
            "note_fr": "Informationnel — discours factuel, aucune promesse chiffrée."
          },
          {
            "code": "F1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.skool.com/blitzstream-6028/about",
            "note_fr": "Archives vidéo des MasterClasses accessibles à tout membre gratuit (sans organisation par niveau)."
          },
          {
            "code": "F2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.skool.com/blitzstream-6028/about",
            "note_fr": "GM Fabien Libiszewski et Kevin Bordi nommés sur la page publique du club gratuit."
          },
          {
            "code": "F3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.skool.com/blitzstream-6028/about",
            "note_fr": "Vidéo (masterclasses), incluse dans le club gratuit."
          },
          {
            "code": "F4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "F5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.skool.com/blitzstream-6028/about",
            "note_fr": "Leçon mensuelle 1 h 30 annoncée, incluse dans le club gratuit."
          },
          {
            "code": "G1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "G2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "G3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "G4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chess.com/club/blitzstream",
            "note_fr": "Tournois organisés via le club Chess.com public (202 événements) ; adhésion au club gratuite."
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://blitzstream.club/",
            "note_fr": "Informationnel — web (Skool) uniquement."
          },
          {
            "code": "H2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "H3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.skool.com/blitzstream-6028/about",
            "note_fr": "Informationnel — service en ligne dépendant de Skool ; aucun incident signalé."
          },
          {
            "code": "I1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "I2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "I3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "I4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "J1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.skool.com/blitzstream-6028/about",
            "note_fr": "Cours collectif mensuel 1 h 30 avec le GM Libiszewski inclus dans le club gratuit (pas de suivi individuel)."
          },
          {
            "code": "J2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.skool.com/blitzstream-6028/about",
            "note_fr": "Communauté de 9 300 membres, accès gratuit (« espace de discussion exclusif »)."
          },
          {
            "code": "J3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.skool.com/blitzstream-6028/-/leaderboards",
            "note_fr": "Classement Skool accessible à tout membre gratuit."
          },
          {
            "code": "K1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "K2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.skool.com/legal?t=privacy",
            "note_fr": "Informationnel — politique de confidentialité de l'hébergeur Skool, valable en gratuit comme en payant."
          },
          {
            "code": "K3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          }
        ]
      }
    },
    {
      "slug": "chessworld-net",
      "name": "Chessworld.net",
      "url": "https://www.chessworld.net/",
      "kind": "platform",
      "type": {
        "en": "online correspondence + video lessons",
        "fr": "correspondance en ligne + cours vidéo"
      },
      "price": {
        "en": "Not available: the \"Full Member\" price is shown nowhere (/chess/membership and /chess/ return 404). The courses are sold individually on Udemy.",
        "fr": "Non disponible : le tarif « Full Member » n’est affiché nulle part (pages /chess/membership et /chess/ en 404). Les cours sont vendus à l’unité sur Udemy."
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 1.98,
      "unweighted_score": 2.24,
      "category_scores": {
        "A": 0.8,
        "B": 1.7,
        "C": 2.6,
        "D": 1.7,
        "E": 2.5,
        "F": 4,
        "G": 2.5,
        "H": 1.3,
        "I": 4.2,
        "J": 3.3,
        "K": 0
      },
      "scores": {
        "A": [
          0,
          0,
          0,
          0,
          0,
          0,
          1,
          1
        ],
        "B": [
          0,
          0,
          0,
          0,
          2,
          1
        ],
        "C": [
          0,
          1,
          1,
          1,
          0,
          2,
          0,
          0,
          2
        ],
        "D": [
          2,
          0,
          0,
          0
        ],
        "E": [
          1,
          0,
          0,
          2
        ],
        "F": [
          2,
          1,
          2,
          1,
          0
        ],
        "G": [
          1,
          0,
          0,
          2
        ],
        "H": [
          1,
          0,
          0,
          0,
          1
        ],
        "I": [
          1,
          3,
          0,
          1
        ],
        "J": [
          0,
          2,
          0,
          2
        ],
        "K": [
          0,
          0,
          0
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 1.04,
        "criteria": [
          {
            "code": "A1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "A2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "A3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "A4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "A5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "A7",
            "status": "quota-symbolic",
            "quota": "Limits apply",
            "source_url": "https://www.chessworld.net/chessclubs/faq_chess.asp",
            "note_fr": "Parties classées pour les Guest Members : « Limits apply » sans nombre publié (FAQ) ; « Unlimited rated games » réservé aux Full Members — le suivi du classement en gratuit est donc plafonné sans chiffre."
          },
          {
            "code": "A8",
            "status": "quota-symbolic",
            "quota": "Limits apply",
            "source_url": "https://www.chessworld.net/chessclubs/faq_chess.asp",
            "note_fr": "Même frontière : le classement interne se construit par les parties classées, limitées sans nombre publié pour les Guest Members."
          },
          {
            "code": "B1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "B2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "B3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "B4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "B5",
            "status": "undocumented",
            "quota": null,
            "source_url": null,
            "note_fr": "Le niveau d'accès à la base « 1.7 million historic games » n'est documenté nulle part (ni la home ni la FAQ ne la rattachent à un palier)."
          },
          {
            "code": "B6",
            "status": "paid",
            "quota": null,
            "source_url": "https://www.chessworld.net/online-chess-courses.asp",
            "note_fr": "Cours d'ouvertures en vidéo vendus à l'unité sur Udemy."
          },
          {
            "code": "C1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "C2",
            "status": "undocumented",
            "quota": null,
            "source_url": null,
            "note_fr": "« Tactics tools » listés sur la home sans que le palier d'accès (guest vs Full Member) soit documenté."
          },
          {
            "code": "C3",
            "status": "paid",
            "quota": null,
            "source_url": "https://www.chessworld.net/online-chess-courses.asp",
            "note_fr": "« Complete Guide to Chess Endgames » : cours vidéo vendu à l'unité sur Udemy."
          },
          {
            "code": "C4",
            "status": "paid",
            "quota": null,
            "source_url": "https://www.chessworld.net/online-chess-courses.asp",
            "note_fr": "Cours vidéo « Chess Strategies » vendu à l'unité sur Udemy."
          },
          {
            "code": "C5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "C6",
            "status": "undocumented",
            "quota": null,
            "source_url": null,
            "note_fr": "« Visualization trainers » listés sans que le palier d'accès soit documenté."
          },
          {
            "code": "C7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "C8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "C9",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessworld.net/online-chess-courses.asp",
            "note_fr": "Le constructeur de plan (« Study plan: Choose your weekly time and focus, then build your plan ») est sur une page publique ; les cours vers lesquels il pointe sont payants (Udemy)."
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessworld.net/chessclubs/register_asplogin.asp",
            "note_fr": "Informationnel — « Join Now – It's Free » ; frontières guest/Full Member documentées dans la FAQ."
          },
          {
            "code": "D2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "D3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "D4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "E1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessworld.net/",
            "note_fr": "Informationnel — témoignages publics sur la home."
          },
          {
            "code": "E2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "E3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessworld.net/",
            "note_fr": "Informationnel — discours factuel."
          },
          {
            "code": "F1",
            "status": "paid",
            "quota": null,
            "source_url": "https://www.chessworld.net/online-chess-courses.asp",
            "note_fr": "Les cours par niveau (« beginner (0-1500) » à « advanced ») sont des cours payants vendus sur Udemy."
          },
          {
            "code": "F2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessworld.net/online-chess-courses.asp",
            "note_fr": "Informationnel — Tryfon Gavriel (CM FIDE) nommé sur la page publique des cours."
          },
          {
            "code": "F3",
            "status": "undocumented",
            "quota": null,
            "source_url": null,
            "note_fr": "Les vidéos sont payantes (Udemy) ; l'accès gratuit aux outils interactifs (trainers) n'est pas documenté — statut d'ensemble non établissable."
          },
          {
            "code": "F4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessworld.net/online-chess-courses.asp",
            "note_fr": "« Course selection adviser » consultable sur la page publique des cours (les cours eux-mêmes sont payants)."
          },
          {
            "code": "F5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "G1",
            "status": "quota-real",
            "quota": "Guest Members can usually play up to five concurrent games at once on ChessWorld.",
            "source_url": "https://www.chessworld.net/chessclubs/openingguide/unlimited-games.asp",
            "note_fr": "5 parties de correspondance simultanées en gratuit = usage quotidien réel (plusieurs coups/jour) ; « Full Members can play unlimited chess games at the same time »."
          },
          {
            "code": "G2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "G3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "G4",
            "status": "quota-symbolic",
            "quota": "Only Guest Welcoming Tournaments; limits apply",
            "source_url": "https://www.chessworld.net/chessclubs/faq_chess.asp",
            "note_fr": "Guests limités aux tournois d'accueil ; tournois toutes-rondes/KO/simuls « Not available to Guest Members »."
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessworld.net/",
            "note_fr": "Informationnel — web seul (« no downloads »), jeu mobile via navigateur."
          },
          {
            "code": "H2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "H3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessworld.net/",
            "note_fr": "Informationnel — service en ligne ; aucun incident signalé."
          },
          {
            "code": "I1",
            "status": "undocumented",
            "quota": null,
            "source_url": null,
            "note_fr": "« Opponent Stats » listé sur la home sans que le palier d'accès soit documenté."
          },
          {
            "code": "I2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessworld.net/",
            "note_fr": "« Browse over 2,000 member-annotated games » : base publique consultable."
          },
          {
            "code": "I3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "I4",
            "status": "undocumented",
            "quota": null,
            "source_url": null,
            "note_fr": "L'archive des parties existe mais le palier d'accès (guest vs Full Member) et les filtres ne sont pas documentés ; « game exports » listé côté Full Members."
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "J2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessworld.net/",
            "note_fr": "Informationnel — ligues par équipes, « thousands of active members » ; adhésion gratuite possible."
          },
          {
            "code": "J3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessworld.net/",
            "note_fr": "Informationnel — classement et ligues, sans monnaie virtuelle ni relance."
          },
          {
            "code": "K1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "K2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "K3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          }
        ]
      }
    },
    {
      "slug": "chess-and-strategy-echecs-and-strategie",
      "name": "Chess & Strategy (Échecs & Stratégie)",
      "url": "https://www.echecs-et-strategie.com/",
      "kind": "platform",
      "type": {
        "en": "French editorial site + video coaching",
        "fr": "site éditorial FR + coaching visio"
      },
      "price": {
        "en": "€360/yr (package of 32 group sessions over video, annual price shown on /cours-d-echecs/); private lesson €50/session; video packs: prices not shown (redirect to apprendre-les-echecs-24h.com); editorial content free",
        "fr": "360 €/an (forfait 32 séances collectives en visio, annuel affiché sur /cours-d-echecs/) ; cours individuel 50 €/séance ; packs vidéo : prix non affichés (renvoi vers apprendre-les-echecs-24h.com) ; contenu éditorial gratuit"
      },
      "languages": 2,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 1.98,
      "unweighted_score": 2.19,
      "category_scores": {
        "A": 0.8,
        "B": 1.1,
        "C": 1.1,
        "D": 4.2,
        "E": 1.7,
        "F": 6,
        "G": 0,
        "H": 2,
        "I": 0,
        "J": 5,
        "K": 2.2
      },
      "scores": {
        "A": [
          0,
          0,
          0,
          0,
          2,
          0,
          0,
          0
        ],
        "B": [
          0,
          0,
          0,
          0,
          0,
          2
        ],
        "C": [
          0,
          1,
          0,
          1,
          0,
          0,
          0,
          0,
          1
        ],
        "D": [
          2,
          0,
          2,
          1
        ],
        "E": [
          1,
          0,
          0,
          1
        ],
        "F": [
          1,
          2,
          2,
          1,
          3
        ],
        "G": [
          0,
          0,
          0,
          0
        ],
        "H": [
          1,
          0,
          1,
          0,
          1
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          3,
          1,
          0,
          2
        ],
        "K": [
          0,
          2,
          0
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 1.6,
        "criteria": [
          {
            "code": "A1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "A2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "A3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "A4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "A5",
            "status": "paid",
            "quota": null,
            "source_url": "https://www.echecs-et-strategie.com/cours-d-echecs/",
            "note_fr": "L'analyse de parties d'élèves se fait dans les cours payants (« Séance à l'unité : 50 € » ; « l'analyse d'une partie d'échecs de l'apprenant pour détecter ses points d'amélioration » ; bilan initial 15 €)."
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "A7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "A8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "B1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "B2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "B3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "B4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "B5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "B6",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.echecs-et-strategie.com/",
            "note_fr": "Analyses d'ouvertures écrites (Italienne, Sicilienne, Slave) publiées gratuitement en articles."
          },
          {
            "code": "C1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "C2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.echecs-et-strategie.com/",
            "note_fr": "Exercices tactiques quotidiens publiés gratuitement en articles (sans banque interactive)."
          },
          {
            "code": "C3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "C4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.echecs-et-strategie.com/",
            "note_fr": "Articles de stratégie (« secrets de la Carlsbad ») gratuits ; les packs vidéo stratégie sont payants."
          },
          {
            "code": "C5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "C6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "C7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "C8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "C9",
            "status": "paid",
            "quota": null,
            "source_url": "https://www.echecs-et-strategie.com/elo/",
            "note_fr": "Programmes « En route vers 1200 / 1400 Elo » = packs vidéo vendus (renvoi vers apprendre-les-echecs-24h.com)."
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.echecs-et-strategie.com/",
            "note_fr": "Informationnel — contenu éditorial et exercices quotidiens gratuits ; cours et packs payants."
          },
          {
            "code": "D2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://echecs-et-strategie.com/mentions-legales/",
            "note_fr": "Informationnel — prix affichés, rétractation 14 jours, pas d'abonnement à annuler."
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.echecs-et-strategie.com/cours-d-echecs/",
            "note_fr": "Informationnel — paliers de cours affichés publiquement (individuel 50 €, forfaits, collectif)."
          },
          {
            "code": "E1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.echecs-et-strategie.com/cours-d-echecs/",
            "note_fr": "Informationnel — témoignages publics (« Pédagogie et satisfaction garanties »)."
          },
          {
            "code": "E2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "E3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://echecs-et-strategie.com/boutique/",
            "note_fr": "Informationnel — promesse marketing constatable sur la boutique publique."
          },
          {
            "code": "F1",
            "status": "paid",
            "quota": null,
            "source_url": "https://echecs-et-strategie.com/boutique/",
            "note_fr": "Les packs (« Bien débuter », « Sicilienne », « Blitz ») sont des produits payants."
          },
          {
            "code": "F2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.echecs-et-strategie.com/cours-d-echecs/",
            "note_fr": "Informationnel — GM Tatiana Dornbusch nommée publiquement ; articles gratuits signés (GM C. Bauer)."
          },
          {
            "code": "F3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.echecs-et-strategie.com/",
            "note_fr": "Le format texte (articles, exercices) est gratuit ; les packs vidéo sont payants."
          },
          {
            "code": "F4",
            "status": "paid",
            "quota": null,
            "source_url": "https://www.echecs-et-strategie.com/cours-d-echecs/",
            "note_fr": "La méthode passe par un bilan payant (15 €) puis un plan individuel non publié, dans le cadre des cours payants."
          },
          {
            "code": "F5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.echecs-et-strategie.com/",
            "note_fr": "Publication quotidienne d'articles gratuits (deux articles datés du 30-08-2026 constatés)."
          },
          {
            "code": "G1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "G2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "G3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "G4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.echecs-et-strategie.com/",
            "note_fr": "Informationnel — web seul."
          },
          {
            "code": "H2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "H3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.echecs-et-strategie.com/",
            "note_fr": "Informationnel — interface et contenu en français."
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://echecs-et-strategie.com/mentions-legales/",
            "note_fr": "Informationnel — hébergement OVH ; aucun incident signalé."
          },
          {
            "code": "I1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "I2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "I3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "I4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "J1",
            "status": "paid",
            "quota": null,
            "source_url": "https://www.echecs-et-strategie.com/cours-d-echecs/",
            "note_fr": "Accès au coach humain (GM Dornbusch) uniquement via séances payantes (« Séance à l'unité : 50 € », bilan 15 €)."
          },
          {
            "code": "J2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://echecs-et-strategie.com/a-propos-du-site-echecs-strategie/",
            "note_fr": "Réseaux sociaux et compteurs publics, accès gratuit ; pas de forum."
          },
          {
            "code": "J3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.echecs-et-strategie.com/",
            "note_fr": "Informationnel — aucune mécanique d'engagement."
          },
          {
            "code": "K1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "K2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://echecs-et-strategie.com/mentions-legales/",
            "note_fr": "Informationnel — OVH Roubaix, mentions CNIL, « non transmises à un tiers » ; vaut en gratuit comme en payant."
          },
          {
            "code": "K3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          }
        ]
      }
    },
    {
      "slug": "wtharvey",
      "name": "WTHarvey",
      "url": "https://wtharvey.com/",
      "kind": "platform",
      "type": {
        "en": "static archive of mate puzzles",
        "fr": "archive statique de puzzles de mat"
      },
      "price": {
        "en": "free (static site, wtharvey.com)",
        "fr": "gratuit (site statique, wtharvey.com)"
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 1.96,
      "unweighted_score": 1.66,
      "category_scores": {
        "A": 0,
        "B": 0,
        "C": 0.4,
        "D": 10,
        "E": 4.2,
        "F": 0.7,
        "G": 0,
        "H": 1.3,
        "I": 0,
        "J": 1.7,
        "K": 0
      },
      "scores": {
        "A": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "C": [
          0,
          1,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "D": [
          3,
          3,
          3,
          3
        ],
        "E": [
          0,
          2,
          1,
          2
        ],
        "F": [
          0,
          0,
          1,
          0,
          0
        ],
        "G": [
          0,
          0,
          0,
          0
        ],
        "H": [
          1,
          0,
          0,
          0,
          1
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          0,
          0,
          0,
          2
        ],
        "K": [
          0,
          0,
          0
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 1.96,
        "criteria": [
          {
            "code": "A1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "A2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "A3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "A4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "A5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "A7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "A8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "B1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "B2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "B3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "B4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "B5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "B6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "C1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "C2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://wtharvey.com/",
            "note_fr": "« 32,000 puzzles » consultables gratuitement, site entièrement gratuit."
          },
          {
            "code": "C3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "C4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "C5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "C6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "C7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "C8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "C9",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://wtharvey.com/",
            "note_fr": "Informationnel — tout le site est gratuit."
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://wtharvey.com/",
            "note_fr": "Informationnel — 0 €."
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://wtharvey.com/",
            "note_fr": "Informationnel — rien à payer."
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://wtharvey.com/",
            "note_fr": "Informationnel — aucun palier payant."
          },
          {
            "code": "E1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "E2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://wtharvey.com/",
            "note_fr": "Informationnel — « All solutions have been verified by a grandmaster-rated chess engine »."
          },
          {
            "code": "E3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://wtharvey.com/",
            "note_fr": "Informationnel — moteur non nommé, sources des parties citées ; page publique."
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://wtharvey.com/",
            "note_fr": "Informationnel — description factuelle."
          },
          {
            "code": "F1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "F2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "F3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://wtharvey.com/",
            "note_fr": "Texte + diagrammes, accès gratuit intégral."
          },
          {
            "code": "F4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "F5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "G1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "G2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "G3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "G4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://wtharvey.com/",
            "note_fr": "Informationnel — web seul."
          },
          {
            "code": "H2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "H3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://wtharvey.com/",
            "note_fr": "Informationnel — pages statiques ; aucun incident signalé."
          },
          {
            "code": "I1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "I2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "I3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "I4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "J2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "J3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://wtharvey.com/",
            "note_fr": "Informationnel — aucune mécanique."
          },
          {
            "code": "K1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "K2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "K3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          }
        ]
      }
    },
    {
      "slug": "chessly",
      "name": "Chessly",
      "url": "https://chessly.com",
      "kind": "platform",
      "type": {
        "en": "GothamChess video courses, Levi AI",
        "fr": "Cours vidéo GothamChess, IA Levi"
      },
      "price": {
        "en": "$89.99/yr ≈ €83 ($9.99/mo) — read by hand on /membership, 2026-09-01.",
        "fr": "89,99 $/an ≈ 83 € (9,99 $/mois) — relevé à la main sur /membership le 01/09/2026."
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 2.05,
      "unweighted_score": 2.11,
      "category_scores": {
        "A": 0,
        "B": 3.3,
        "C": 1.1,
        "D": 3.3,
        "E": 2.5,
        "F": 5.3,
        "G": 0,
        "H": 1.3,
        "I": 0,
        "J": 4.2,
        "K": 2.2
      },
      "scores": {
        "A": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          1,
          2,
          0,
          1,
          0,
          2
        ],
        "C": [
          0,
          1,
          1,
          1,
          0,
          0,
          0,
          0,
          0
        ],
        "D": [
          0,
          1,
          3,
          0
        ],
        "E": [
          1,
          0,
          0,
          2
        ],
        "F": [
          1,
          2,
          3,
          1,
          1
        ],
        "G": [
          0,
          0,
          0,
          0
        ],
        "H": [
          1,
          0,
          0,
          0,
          1
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          0,
          2,
          1,
          2
        ],
        "K": [
          1,
          1,
          0
        ]
      },
      "evidence_urls": {
        "A": [
          "https://chessly.com",
          "https://chessly.com",
          "https://chessly.com/",
          "https://chessly.com/",
          "https://chessly.com/",
          "https://chessly.com",
          "https://chessly.com",
          "https://chessly.com"
        ],
        "B": [
          "https://chessly.com",
          "https://chessly.com",
          "https://chessly.com",
          "https://chessly.com",
          "https://chessly.com",
          "https://chessly.com"
        ],
        "C": [
          "https://chessly.com",
          "https://chessly.com",
          "https://chessly.com",
          "https://chessly.com/",
          "https://chessly.com/",
          "https://chessly.com",
          "https://chessly.com/faqs",
          "https://chessly.com/",
          "https://chessly.com/"
        ],
        "D": [
          "https://chessly.com/terms-of-use",
          "https://chessly.com/membership",
          "https://chessly.com/terms-of-use",
          "https://chessly.com/membership"
        ],
        "E": [
          "https://chessly.com",
          "https://chessly.com",
          "https://chessly.com",
          "https://chessly.com"
        ],
        "F": [
          "https://chessly.com",
          "https://chessly.com",
          "https://chessly.com",
          "https://chessly.com",
          "https://chessly.com/privacy-policy"
        ],
        "G": [
          "https://chessly.com",
          "https://chessly.com",
          "https://chessly.com",
          "https://chessly.com"
        ],
        "H": [
          "https://play.google.com/store/search?q=chessly",
          "https://chessly.com",
          "https://chessly.com",
          "https://chessly.com/faqs",
          "https://chessly.com"
        ],
        "I": [
          "https://chessly.com/",
          "https://chessly.com/",
          "https://chessly.com/",
          "https://chessly.com/"
        ],
        "J": [
          "https://chessly.com",
          "https://chessly.com",
          "https://chessly.com/faqs",
          "https://chessly.com"
        ],
        "K": [
          "https://chessly.com/privacy-policy",
          "https://chessly.com/privacy-policy",
          "https://chessly.com"
        ]
      },
      "sources": [
        "https://chessly.com/",
        "https://chessly.com/terms-of-use",
        "https://chessly.com/privacy-policy",
        "https://chessly.com/membership",
        "https://en.wikipedia.org/wiki/Levy_Rozman"
      ],
      "review_url": "https://www.chesspivot.com/en/reviews/chessly",
      "free_access": null
    },
    {
      "slug": "ichessu-chess-coach-online",
      "name": "iChessU / Chess Coach Online",
      "url": "https://www.chesscoachonline.com/",
      "kind": "platform",
      "type": {
        "en": "online coaching school",
        "fr": "école de coaching en ligne"
      },
      "price": {
        "en": "Pawn plan $180/mo (4 h of lessons) × 12 = $2,160/yr ≈ €1,987 (rule: 12 × monthly of the cheapest plan; Knight $320/mo, Rook $420/mo).",
        "fr": "Plan Pawn 180 $/mois (4 h de cours) × 12 = 2 160 $/an ≈ 1 987 € (règle : 12 × mensuel du plan le moins cher ; Knight 320 $/mois, Rook 420 $/mois)."
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 1.94,
      "unweighted_score": 1.97,
      "category_scores": {
        "A": 1.3,
        "B": 1.7,
        "C": 1.9,
        "D": 1.7,
        "E": 1.7,
        "F": 6,
        "G": 1.7,
        "H": 0.7,
        "I": 0,
        "J": 5,
        "K": 0
      },
      "scores": {
        "A": [
          1,
          0,
          0,
          0,
          2,
          0,
          0,
          0
        ],
        "B": [
          1,
          0,
          0,
          1,
          0,
          1
        ],
        "C": [
          1,
          0,
          1,
          1,
          0,
          0,
          1,
          0,
          1
        ],
        "D": [
          0,
          0,
          1,
          1
        ],
        "E": [
          1,
          0,
          0,
          1
        ],
        "F": [
          2,
          3,
          2,
          1,
          1
        ],
        "G": [
          1,
          0,
          0,
          1
        ],
        "H": [
          0,
          0,
          0,
          0,
          1
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          3,
          1,
          0,
          2
        ],
        "K": [
          0,
          0,
          0
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": null
    },
    {
      "slug": "diagonal-chess-fr",
      "name": "Diagonal Chess (FR)",
      "url": "https://diagonalchess.com/",
      "kind": "platform",
      "type": {
        "en": "independent coach + 30-day digital method",
        "fr": "coach indépendant + méthode numérique 30 jours"
      },
      "price": {
        "en": "no subscription: private lesson €40/h (pack of 10 listed at €360); FONDATIONS digital method sold separately.",
        "fr": "pas d’abonnement : cours particulier 40 €/h (pack de 10 affiché à 360 €) ; méthode numérique FONDATIONS vendue à part."
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 2.11,
      "unweighted_score": 2.1,
      "category_scores": {
        "A": 2.1,
        "B": 0.6,
        "C": 2.2,
        "D": 3.3,
        "E": 2.5,
        "F": 4.7,
        "G": 0,
        "H": 1.3,
        "I": 0,
        "J": 4.2,
        "K": 2.2
      },
      "scores": {
        "A": [
          1,
          0,
          0,
          0,
          2,
          0,
          2,
          0
        ],
        "B": [
          1,
          0,
          0,
          0,
          0,
          0
        ],
        "C": [
          1,
          0,
          1,
          1,
          0,
          0,
          1,
          0,
          2
        ],
        "D": [
          0,
          2,
          1,
          1
        ],
        "E": [
          1,
          0,
          1,
          1
        ],
        "F": [
          2,
          1,
          2,
          2,
          0
        ],
        "G": [
          0,
          0,
          0,
          0
        ],
        "H": [
          1,
          0,
          0,
          0,
          1
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          2,
          0,
          0,
          3
        ],
        "K": [
          0,
          2,
          0
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": null
    },
    {
      "slug": "decodechess",
      "name": "DecodeChess",
      "url": "https://decodechess.com/",
      "kind": "platform",
      "type": {
        "en": "engine moves explained in plain language",
        "fr": "explication de coups moteur en langage naturel"
      },
      "price": {
        "en": "$84/yr ≈ €77 (annual price shown; monthly $8.25); one-off credits from $15 ($1 ≈ €0.92)",
        "fr": "84 $/an ≈ 77 € (annuel affiché ; mensuel 8,25 $) ; crédits à l’unité dès 15 $ (1 $ ≈ 0,92 €)"
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 1.88,
      "unweighted_score": 1.91,
      "category_scores": {
        "A": 2.5,
        "B": 0,
        "C": 0.4,
        "D": 5.8,
        "E": 2.5,
        "F": 0,
        "G": 1.7,
        "H": 2,
        "I": 3.3,
        "J": 1.7,
        "K": 1.1
      },
      "scores": {
        "A": [
          1,
          2,
          0,
          0,
          3,
          0,
          0,
          0
        ],
        "B": [
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "C": [
          0,
          0,
          0,
          1,
          0,
          0,
          0,
          0,
          0
        ],
        "D": [
          1,
          1,
          2,
          3
        ],
        "E": [
          1,
          0,
          1,
          1
        ],
        "F": [
          0,
          0,
          0,
          0,
          0
        ],
        "G": [
          0,
          2,
          0,
          0
        ],
        "H": [
          1,
          1,
          0,
          0,
          1
        ],
        "I": [
          0,
          1,
          1,
          2
        ],
        "J": [
          0,
          0,
          0,
          2
        ],
        "K": [
          0,
          1,
          0
        ]
      },
      "evidence_urls": {
        "A": [
          "https://decodechess.com/pricing/",
          "https://decodechess.com/pricing/",
          "https://decodechess.com/features/",
          "https://decodechess.com/features/",
          "https://decodechess.com/pricing/",
          "https://decodechess.com/faq/",
          "https://decodechess.com/features/",
          "https://decodechess.com/features/"
        ],
        "B": [
          "https://decodechess.com/features/",
          "https://decodechess.com/features/",
          "https://decodechess.com/features/",
          "https://decodechess.com/features/",
          "https://decodechess.com/features/",
          "https://decodechess.com/features/"
        ],
        "C": [
          "https://decodechess.com/features/",
          "https://decodechess.com/features/",
          "https://decodechess.com/features/",
          "https://decodechess.com/features/",
          "https://decodechess.com/features/",
          "https://decodechess.com/features/",
          "https://decodechess.com/features/",
          "https://decodechess.com/features/",
          "https://decodechess.com/features/"
        ],
        "D": [
          "https://decodechess.com/pricing/",
          "https://decodechess.com/pricing/",
          "https://decodechess.com/pricing/",
          "https://decodechess.com/pricing/"
        ],
        "E": [
          "https://decodechess.com/testimonials/",
          "https://decodechess.com/faq/",
          "https://decodechess.com/about/",
          "https://decodechess.com/"
        ],
        "F": [
          "https://decodechess.com/",
          "https://decodechess.com/about/",
          "https://decodechess.com/",
          "https://decodechess.com/features/",
          "https://decodechess.com/insights/"
        ],
        "G": [
          "https://decodechess.com/features/",
          "https://decodechess.com/features/",
          "https://decodechess.com/features/",
          "https://decodechess.com/"
        ],
        "H": [
          "https://decodechess.com/",
          "https://decodechess.com/",
          "https://decodechess.com/",
          "https://decodechess.com/faq/",
          "https://decodechess.com/"
        ],
        "I": [
          "https://decodechess.com/features/",
          "https://decodechess.com/pricing/",
          "https://decodechess.com/pricing/",
          "https://decodechess.com/pricing/"
        ],
        "J": [
          "https://decodechess.com/",
          "https://decodechess.com/",
          "https://decodechess.com/",
          "https://decodechess.com/"
        ],
        "K": [
          "https://decodechess.com/faq/",
          "https://decodechess.com/",
          "https://decodechess.com/"
        ]
      },
      "sources": [
        "https://decodechess.com/",
        "https://decodechess.com/about/",
        "https://decodechess.com/pricing/",
        "https://decodechess.com/insights/",
        "https://decodechess.com/features/",
        "https://decodechess.com/testimonials/"
      ],
      "review_url": "https://www.chesspivot.com/en/reviews/decodechess",
      "free_access": null
    },
    {
      "slug": "chessgenius-richard-lang",
      "name": "ChessGenius (Richard Lang)",
      "url": "https://www.chessgenius.com/",
      "kind": "engine",
      "type": {
        "en": "historic mobile playing engine",
        "fr": "moteur de jeu historique mobile"
      },
      "price": {
        "en": "$5.99 (one-off iOS purchase, App Store) ≈ €5.51",
        "fr": "5,99 $ (achat unique iOS, App Store) ≈ 5,51 €"
      },
      "languages": 2,
      "read_at": "2026-08-30",
      "scored_overall": false,
      "overall_score": null,
      "unweighted_score": null,
      "category_scores": {
        "A": 1.3,
        "B": 0,
        "C": 0,
        "D": 5.8,
        "E": 4.2,
        "F": 0.7,
        "G": 1.7,
        "H": 4,
        "I": 0.8,
        "J": 2.5,
        "K": 3.3
      },
      "scores": {
        "A": [
          1,
          1,
          0,
          0,
          1,
          0,
          0,
          0
        ],
        "B": [
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "C": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "D": [
          0,
          3,
          1,
          3
        ],
        "E": [
          1,
          0,
          2,
          2
        ],
        "F": [
          0,
          1,
          0,
          0,
          0
        ],
        "G": [
          0,
          1,
          1,
          0
        ],
        "H": [
          2,
          0,
          1,
          0,
          3
        ],
        "I": [
          0,
          0,
          0,
          1
        ],
        "J": [
          0,
          0,
          0,
          3
        ],
        "K": [
          2,
          0,
          1
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": null
    },
    {
      "slug": "world-chess-academy-worldchess-com",
      "name": "World Chess Academy (worldchess.com)",
      "url": "https://worldchess.com/",
      "kind": "platform",
      "type": {
        "en": "FIDE playing platform with masterclasses",
        "fr": "plateforme de jeu FIDE avec masterclasses"
      },
      "price": {
        "en": "Not available: the /upgrade-to-pro page shows \"-\" instead of the amounts for the Gold, Platinum and Black tiers.",
        "fr": "Non disponible : la page /upgrade-to-pro affiche « - » à la place des montants des paliers Gold, Platinum et Black."
      },
      "languages": 18,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 1.87,
      "unweighted_score": 2.34,
      "category_scores": {
        "A": 1.7,
        "B": 0,
        "C": 0.7,
        "D": 2.5,
        "E": 2.5,
        "F": 4.7,
        "G": 2.5,
        "H": 4.7,
        "I": 1.7,
        "J": 2.5,
        "K": 2.2
      },
      "scores": {
        "A": [
          0,
          1,
          1,
          0,
          0,
          0,
          1,
          1
        ],
        "B": [
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "C": [
          0,
          1,
          0,
          1,
          0,
          0,
          0,
          0,
          0
        ],
        "D": [
          2,
          0,
          0,
          1
        ],
        "E": [
          0,
          0,
          1,
          2
        ],
        "F": [
          1,
          3,
          1,
          0,
          2
        ],
        "G": [
          2,
          0,
          0,
          1
        ],
        "H": [
          3,
          1,
          2,
          0,
          1
        ],
        "I": [
          1,
          0,
          0,
          1
        ],
        "J": [
          1,
          1,
          0,
          1
        ],
        "K": [
          1,
          1,
          0
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 1.49,
        "criteria": [
          {
            "code": "A1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "A2",
            "status": "paid",
            "quota": null,
            "source_url": "https://worldchess.com/upgrade-to-pro",
            "note_fr": "« Advanced Game Analysis » listé parmi les avantages Pro ; le payload d'accueil oppose au gratuit « There is more: FIDE-rated games and tournaments, unlimited puzzles and analysis, and masterclasses » → « Become a Pro »."
          },
          {
            "code": "A3",
            "status": "paid",
            "quota": null,
            "source_url": "https://worldchess.com/upgrade-to-pro",
            "note_fr": "« Detailed Performance Stats » listé parmi les avantages Pro."
          },
          {
            "code": "A4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "A5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "A7",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://worldchess.com/upgrade-to-pro",
            "note_fr": "Le suivi du classement interne est gratuit : « Welcome to World Chess! You can now play rated games and challenge human opponents » (payload servi) ; classement FOA/FIDE réservé au Pro (« FIDE Ratings and Titles »)."
          },
          {
            "code": "A8",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://worldchess.com/upgrade-to-pro",
            "note_fr": "Position dans le classement via les parties classées gratuites (« You can now play rated games ») ; le volet FOA/FIDE est Pro."
          },
          {
            "code": "B1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "B2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "B3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "B4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "B5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "B6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "C1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "C2",
            "status": "quota-symbolic",
            "quota": "Unlimited Puzzles",
            "source_url": "https://worldchess.com/upgrade-to-pro",
            "note_fr": "« Unlimited Puzzles » est un avantage Pro — le gratuit est donc limité, sans nombre publié (« There is more: … unlimited puzzles … » derrière « Become a Pro »)."
          },
          {
            "code": "C3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "C4",
            "status": "paid",
            "quota": null,
            "source_url": "https://worldchess.com/masterclass",
            "note_fr": "Masterclasses payantes : JSON-LD « offers » à 25 EUR sur /masterclass, et listées parmi ce que débloque le Pro (« …and masterclasses », « Become a Pro »)."
          },
          {
            "code": "C5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "C6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "C7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "C8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "C9",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://worldchess.com/upgrade-to-pro",
            "note_fr": "Informationnel — palier gratuit nommé « Beginner Plan (Free) » dans le payload servi ; frontières Pro listées publiquement."
          },
          {
            "code": "D2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "D3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://worldchess.com/upgrade-to-pro",
            "note_fr": "Informationnel — trois paliers Gold, Platinum, Black affichés (montants « - »)."
          },
          {
            "code": "E1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "E2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "E3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://worldchess.com/about/fair-play-policy",
            "note_fr": "Informationnel — « NightWatch » nommé sans paramètres ; page publique."
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/chessvision-ai-chess-scanner/id1574933453",
            "note_fr": "Informationnel — revendication vérifiable (« the only online chess platform officially recognized by FIDE »)."
          },
          {
            "code": "F1",
            "status": "paid",
            "quota": null,
            "source_url": "https://worldchess.com/masterclass",
            "note_fr": "Les masterclasses (seuls cours) sont payantes (offre 25 EUR / Pro) et sans organisation par niveau."
          },
          {
            "code": "F2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://worldchess.com/masterclass",
            "note_fr": "Informationnel — auteurs (Anand, Svidler, Gelfand…) nommés sur la page publique /masterclass."
          },
          {
            "code": "F3",
            "status": "paid",
            "quota": null,
            "source_url": "https://worldchess.com/masterclass",
            "note_fr": "Format vidéo seul (« interactive video streams »), réservé au payant (offre 25 EUR / Pro)."
          },
          {
            "code": "F4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "F5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://worldchess.com/masterclass",
            "note_fr": "Informationnel — cadence annoncée publiquement : « Monthly interactive video streams with elite players »."
          },
          {
            "code": "G1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://worldchess.com/upgrade-to-pro",
            "note_fr": "Jeu contre humains gratuit : « Register for free » + « You can now play rated games and challenge human opponents » ; anti-triche NightWatch documenté (fair-play-policy)."
          },
          {
            "code": "G2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "G3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "G4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://worldchess.com/tournaments",
            "note_fr": "Des tournois gratuits existent (filtre de participation « Free »/« Paid » dans le payload servi ; « To join tournaments, please verify your email ») ; « Tournaments with Money Prizes » réservés au Pro."
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://worldchess.com/",
            "note_fr": "Informationnel — web + apps iOS/Android."
          },
          {
            "code": "H2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/chessvision-ai-chess-scanner/id1574933453",
            "note_fr": "Informationnel — notes publiques des stores."
          },
          {
            "code": "H3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://worldchess.com/",
            "note_fr": "Informationnel — 18 langues d'interface."
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://worldchess.com/",
            "note_fr": "Informationnel — service en ligne ; aucun incident signalé."
          },
          {
            "code": "I1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://worldchess.com/players",
            "note_fr": "Profils publics des joueurs consultables gratuitement (classements, titre) ; aucun rapport de préparation."
          },
          {
            "code": "I2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "I3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "I4",
            "status": "paid",
            "quota": null,
            "source_url": "https://worldchess.com/upgrade-to-pro",
            "note_fr": "L'historique détaillé passe par « Detailed Performance Stats », avantage Pro."
          },
          {
            "code": "J1",
            "status": "undocumented",
            "quota": null,
            "source_url": null,
            "note_fr": "Le lien coachs pointe vers coaches.chessarena.com, page sans contenu lisible — statut gratuit non établissable."
          },
          {
            "code": "J2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://worldchess.com/community",
            "note_fr": "Annuaire public de clubs, consultable gratuitement (sans effectifs)."
          },
          {
            "code": "J3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://worldchess.com/upgrade-to-pro",
            "note_fr": "Informationnel — le gratuit est financé par la pub (« No ads » réservé au Pro) ; classements publics."
          },
          {
            "code": "K1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://worldchess.com/about/privacy-policy",
            "note_fr": "Informationnel — « Right to Data Portability » sur demande, valable pour tout compte."
          },
          {
            "code": "K2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://worldchess.com/about/privacy-policy",
            "note_fr": "Informationnel — UK/EU GDPR ; vaut en gratuit comme en payant."
          },
          {
            "code": "K3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          }
        ]
      }
    },
    {
      "slug": "remote-chess-academy-gm-igor-smirnov",
      "name": "Remote Chess Academy (GM Igor Smirnov)",
      "url": "https://chess-teacher.com/",
      "kind": "platform",
      "type": {
        "en": "GM video courses sold outright",
        "fr": "cours vidéo GM à l’achat"
      },
      "price": {
        "en": "one-off purchases: \"Super Pack\" $997 ≈ €917 (full offer, online.chess-teacher.com); \"Boost Your Elo to 2000\" bundle $197 ≈ €181; courses from $57 to $997; no subscription",
        "fr": "achats uniques : « Super Pack » 997 $ ≈ 917 € (offre complète, online.chess-teacher.com) ; bundle « Boost Your Elo to 2000 » 197 $ ≈ 181 € ; cours de 57 à 997 $ ; aucun abonnement"
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 1.83,
      "unweighted_score": 1.8,
      "category_scores": {
        "A": 0,
        "B": 2.8,
        "C": 1.1,
        "D": 2.5,
        "E": 2.5,
        "F": 5.3,
        "G": 0,
        "H": 2,
        "I": 0,
        "J": 2.5,
        "K": 1.1
      },
      "scores": {
        "A": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          1,
          1,
          0,
          1,
          0,
          2
        ],
        "C": [
          0,
          0,
          1,
          1,
          0,
          0,
          0,
          0,
          1
        ],
        "D": [
          0,
          0,
          2,
          1
        ],
        "E": [
          1,
          2,
          0,
          0
        ],
        "F": [
          2,
          2,
          2,
          1,
          1
        ],
        "G": [
          0,
          0,
          0,
          0
        ],
        "H": [
          1,
          0,
          0,
          0,
          2
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          0,
          1,
          0,
          2
        ],
        "K": [
          0,
          1,
          0
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": null
    },
    {
      "slug": "chessmate-trychessmate-com",
      "name": "Chessmate (trychessmate.com)",
      "url": "https://trychessmate.com/",
      "kind": "platform",
      "type": {
        "en": "mobile spaced-repetition opening trainer",
        "fr": "entraîneur d’ouvertures mobile à révision espacée"
      },
      "price": {
        "en": "$34.99/yr ≈ €32 (annual price shown in the App Store in-app purchases; $7.99/mo; $5.99/week; $79.99 lifetime)",
        "fr": "34,99 $/an ≈ 32 € (annuel affiché dans les achats intégrés App Store ; 7,99 $/mois ; 5,99 $/semaine ; 79,99 $ à vie)"
      },
      "languages": 8,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 1.82,
      "unweighted_score": 1.65,
      "category_scores": {
        "A": 0,
        "B": 2.8,
        "C": 0.7,
        "D": 5,
        "E": 0.8,
        "F": 2.7,
        "G": 0,
        "H": 3.3,
        "I": 0,
        "J": 1.7,
        "K": 1.1
      },
      "scores": {
        "A": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          1,
          2,
          0,
          0,
          0,
          2
        ],
        "C": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          2,
          0
        ],
        "D": [
          0,
          2,
          1,
          3
        ],
        "E": [
          0,
          0,
          1,
          0
        ],
        "F": [
          1,
          0,
          1,
          0,
          2
        ],
        "G": [
          0,
          0,
          0,
          0
        ],
        "H": [
          2,
          0,
          2,
          0,
          1
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          0,
          0,
          0,
          2
        ],
        "K": [
          0,
          1,
          0
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": null
    },
    {
      "slug": "magnus-trainer",
      "name": "Magnus Trainer",
      "url": "https://www.playmagnus.com/",
      "kind": "platform",
      "type": {
        "en": "playful Magnus Carlsen lessons, no longer updated",
        "fr": "leçons ludiques Magnus Carlsen, figée"
      },
      "price": {
        "en": "$37.99-74.99/yr depending on the iOS subscription ≈ €35-69 (https://apps.apple.com/us/app/magnus-trainer-train-chess/id1097863089); rule: annual price shown (store range); \"lifetime\" $299.99",
        "fr": "37,99 à 74,99 $/an selon l’abonnement iOS (≈ 35-69 €), prix annuels affichés sur l’App Store US ; VIP hebdomadaire 5,99 €/semaine sur l’App Store FR."
      },
      "languages": 2,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 1.81,
      "unweighted_score": 1.55,
      "category_scores": {
        "A": 0,
        "B": 0.6,
        "C": 1.9,
        "D": 5.8,
        "E": 0.8,
        "F": 4,
        "G": 0,
        "H": 4,
        "I": 0,
        "J": 0,
        "K": 0
      },
      "scores": {
        "A": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          0,
          0,
          0,
          0,
          0,
          1
        ],
        "C": [
          0,
          1,
          1,
          1,
          0,
          0,
          1,
          0,
          1
        ],
        "D": [
          1,
          2,
          1,
          3
        ],
        "E": [
          0,
          0,
          0,
          1
        ],
        "F": [
          1,
          2,
          2,
          1,
          0
        ],
        "G": [
          0,
          0,
          0,
          0
        ],
        "H": [
          1,
          3,
          1,
          0,
          1
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          0,
          0,
          0,
          0
        ],
        "K": [
          0,
          0,
          0
        ]
      },
      "evidence_urls": {
        "A": [
          "https://apps.apple.com/us/app/magnus-trainer-train-chess/id1097863089",
          "https://apps.apple.com/us/app/magnus-trainer-train-chess/id1097863089",
          "https://apps.apple.com/us/app/magnus-trainer-train-chess/id1097863089",
          "https://apps.apple.com/us/app/magnus-trainer-train-chess/id1097863089",
          "https://apps.apple.com/us/app/magnus-trainer-train-chess/id1097863089",
          "https://apps.apple.com/us/app/magnus-trainer-train-chess/id1097863089",
          "https://apps.apple.com/us/app/magnus-trainer-train-chess/id1097863089",
          "https://apps.apple.com/us/app/magnus-trainer-train-chess/id1097863089"
        ],
        "B": [
          "https://apps.apple.com/us/app/magnus-trainer-train-chess/id1097863089",
          "https://apps.apple.com/us/app/magnus-trainer-train-chess/id1097863089",
          "https://apps.apple.com/us/app/magnus-trainer-train-chess/id1097863089",
          "https://apps.apple.com/us/app/magnus-trainer-train-chess/id1097863089",
          "https://apps.apple.com/us/app/magnus-trainer-train-chess/id1097863089",
          "https://apps.apple.com/us/app/magnus-trainer-train-chess/id1097863089"
        ],
        "C": [
          "https://apps.apple.com/us/app/magnus-trainer-train-chess/id1097863089",
          "https://apps.apple.com/us/app/magnus-trainer-train-chess/id1097863089",
          "https://apps.apple.com/us/app/magnus-trainer-train-chess/id1097863089",
          "https://apps.apple.com/us/app/magnus-trainer-train-chess/id1097863089",
          "https://apps.apple.com/us/app/magnus-trainer-train-chess/id1097863089",
          "https://apps.apple.com/us/app/magnus-trainer-train-chess/id1097863089",
          "https://apps.apple.com/us/app/magnus-trainer-train-chess/id1097863089",
          "https://apps.apple.com/us/app/magnus-trainer-train-chess/id1097863089",
          "https://apps.apple.com/us/app/magnus-trainer-train-chess/id1097863089"
        ],
        "D": [
          "https://apps.apple.com/us/app/magnus-trainer-train-chess/id1097863089",
          "https://apps.apple.com/us/app/magnus-trainer-train-chess/id1097863089",
          "https://apps.apple.com/us/app/magnus-trainer-train-chess/id1097863089",
          "https://apps.apple.com/us/app/magnus-trainer-train-chess/id1097863089"
        ],
        "E": [
          "https://apps.apple.com/us/app/magnus-trainer-train-chess/id1097863089",
          "https://apps.apple.com/us/app/magnus-trainer-train-chess/id1097863089",
          "https://apps.apple.com/us/app/magnus-trainer-train-chess/id1097863089",
          "https://www.playmagnus.com/"
        ],
        "F": [
          "https://apps.apple.com/us/app/magnus-trainer-train-chess/id1097863089",
          "https://apps.apple.com/us/app/magnus-trainer-train-chess/id1097863089",
          "https://apps.apple.com/us/app/magnus-trainer-train-chess/id1097863089",
          "https://apps.apple.com/us/app/magnus-trainer-train-chess/id1097863089",
          "https://apps.apple.com/us/app/magnus-trainer-train-chess/id1097863089"
        ],
        "G": [
          "https://apps.apple.com/us/app/magnus-trainer-train-chess/id1097863089",
          "https://apps.apple.com/us/app/magnus-trainer-train-chess/id1097863089",
          "https://apps.apple.com/us/app/magnus-trainer-train-chess/id1097863089",
          "https://apps.apple.com/us/app/magnus-trainer-train-chess/id1097863089"
        ],
        "H": [
          "https://apps.apple.com/us/app/magnus-trainer-train-chess/id1097863089",
          "https://apps.apple.com/us/app/magnus-trainer-train-chess/id1097863089",
          "https://apps.apple.com/us/app/magnus-trainer-train-chess/id1097863089",
          "https://apps.apple.com/us/app/magnus-trainer-train-chess/id1097863089",
          "https://apps.apple.com/us/app/magnus-trainer-train-chess/id1097863089"
        ],
        "I": [
          "https://apps.apple.com/us/app/magnus-trainer-train-chess/id1097863089",
          "https://apps.apple.com/us/app/magnus-trainer-train-chess/id1097863089",
          "https://apps.apple.com/us/app/magnus-trainer-train-chess/id1097863089",
          "https://apps.apple.com/us/app/magnus-trainer-train-chess/id1097863089"
        ],
        "J": [
          "https://apps.apple.com/us/app/magnus-trainer-train-chess/id1097863089",
          "https://apps.apple.com/us/app/magnus-trainer-train-chess/id1097863089",
          "https://apps.apple.com/us/app/magnus-trainer-train-chess/id1097863089",
          "https://apps.apple.com/us/app/magnus-trainer-train-chess/id1097863089"
        ],
        "K": [
          "https://apps.apple.com/us/app/magnus-trainer-train-chess/id1097863089",
          "https://apps.apple.com/us/app/magnus-trainer-train-chess/id1097863089",
          "https://apps.apple.com/us/app/magnus-trainer-train-chess/id1097863089"
        ]
      },
      "sources": [
        "https://apps.apple.com/us/app/magnus-trainer-train-chess/id1097863089",
        "https://apps.apple.com/us/app/id1097863089",
        "https://www.playmagnus.com/",
        "https://en.wikipedia.org/wiki/Play_Magnus_Group",
        "https://en.wikipedia.org/wiki/Chess.com"
      ],
      "review_url": "https://www.chesspivot.com/en/reviews/magnus-trainer",
      "free_access": null
    },
    {
      "slug": "chessbase-opening-encyclopaedia-2026",
      "name": "ChessBase Opening Encyclopaedia 2026",
      "url": "https://shop.chessbase.com/en/products/opening_encyclopaedia_2026",
      "kind": "platform",
      "type": {
        "en": "Opening encyclopaedia for ChessBase",
        "fr": "Encyclopédie d’ouvertures pour ChessBase"
      },
      "price": {
        "en": "€169.90 one-off purchase (annual edition, March 2026) + ChessBase/Fritz host software required",
        "fr": "169,90 € achat unique (édition annuelle, mars 2026) + logiciel hôte ChessBase/Fritz requis"
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 1.81,
      "unweighted_score": 1.82,
      "category_scores": {
        "A": 0,
        "B": 4.4,
        "C": 0.4,
        "D": 1.7,
        "E": 2.5,
        "F": 4,
        "G": 0,
        "H": 2,
        "I": 0,
        "J": 1.7,
        "K": 3.3
      },
      "scores": {
        "A": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          1,
          1,
          0,
          1,
          2,
          3
        ],
        "C": [
          0,
          0,
          0,
          1,
          0,
          0,
          0,
          0,
          0
        ],
        "D": [
          0,
          0,
          1,
          1
        ],
        "E": [
          0,
          0,
          1,
          2
        ],
        "F": [
          1,
          2,
          2,
          0,
          1
        ],
        "G": [
          0,
          0,
          0,
          0
        ],
        "H": [
          0,
          0,
          0,
          0,
          3
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          0,
          0,
          0,
          2
        ],
        "K": [
          2,
          0,
          1
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": null
    },
    {
      "slug": "improve-my-chess",
      "name": "Improve my Chess",
      "url": "https://improvemychess.com/",
      "kind": "platform",
      "type": {
        "en": "GM video coaching programme",
        "fr": "programme vidéo de coaching GM"
      },
      "price": {
        "en": "$57 (shown on improvemychess.com/pricing as the \"one-time entry cost\" of a 12-month curriculum; periodicity not explicit) ≈ €52.44",
        "fr": "57 $ (affiché sur improvemychess.com/pricing comme « one-time entry cost » d’un curriculum 12 mois ; périodicité non explicite) ≈ 52,44 €"
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 1.78,
      "unweighted_score": 1.82,
      "category_scores": {
        "A": 0,
        "B": 0,
        "C": 1.5,
        "D": 5.8,
        "E": 2.5,
        "F": 4.7,
        "G": 0,
        "H": 1.3,
        "I": 0,
        "J": 4.2,
        "K": 0
      },
      "scores": {
        "A": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "C": [
          0,
          0,
          1,
          1,
          0,
          0,
          0,
          0,
          2
        ],
        "D": [
          1,
          2,
          1,
          3
        ],
        "E": [
          1,
          0,
          1,
          1
        ],
        "F": [
          1,
          2,
          1,
          2,
          1
        ],
        "G": [
          0,
          0,
          0,
          0
        ],
        "H": [
          1,
          0,
          0,
          0,
          1
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          2,
          0,
          0,
          3
        ],
        "K": [
          0,
          0,
          0
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": null
    },
    {
      "slug": "chessvision-ai",
      "name": "Chessvision.ai",
      "url": "https://chessvision.ai/",
      "kind": "platform",
      "type": {
        "en": "Position scanner and ebook reader",
        "fr": "Scanner de positions et lecteur d’ebooks"
      },
      "price": {
        "en": "eBook Reader $45.99/yr ≈ €42 ($6.99/mo); price of the premium scanner: not available. Limited free tier.",
        "fr": "eBook Reader 45,99 $/an ≈ 42 € (6,99 $/mois) ; prix du scanner premium : non disponible. Version gratuite limitée."
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 1.77,
      "unweighted_score": 2.11,
      "category_scores": {
        "A": 0.8,
        "B": 0.6,
        "C": 0,
        "D": 5.8,
        "E": 2.5,
        "F": 1.3,
        "G": 0,
        "H": 4.7,
        "I": 1.7,
        "J": 2.5,
        "K": 3.3
      },
      "scores": {
        "A": [
          1,
          1,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          0,
          0,
          0,
          0,
          1,
          0
        ],
        "C": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "D": [
          2,
          2,
          1,
          2
        ],
        "E": [
          0,
          0,
          1,
          2
        ],
        "F": [
          0,
          0,
          0,
          0,
          2
        ],
        "G": [
          0,
          0,
          0,
          0
        ],
        "H": [
          3,
          3,
          0,
          0,
          1
        ],
        "I": [
          0,
          0,
          2,
          0
        ],
        "J": [
          0,
          1,
          0,
          2
        ],
        "K": [
          2,
          0,
          1
        ]
      },
      "evidence_urls": {
        "A": [
          "https://chessvision.ai/",
          "https://chessvision.ai/",
          "https://chessvision.ai/",
          "https://chessvision.ai/",
          "https://chessvision.ai/",
          "https://chessvision.ai/",
          "https://chessvision.ai/",
          "https://chessvision.ai/"
        ],
        "B": [
          "https://chessvision.ai/",
          "https://chessvision.ai/",
          "https://chessvision.ai/",
          "https://chessvision.ai/",
          "https://ebook.chessvision.ai/",
          "https://chessvision.ai/"
        ],
        "C": [
          "https://chessvision.ai/",
          "https://chessvision.ai/",
          "https://chessvision.ai/",
          "https://chessvision.ai/",
          "https://chessvision.ai/",
          "https://chessvision.ai/",
          "https://chessvision.ai/",
          "https://chessvision.ai/",
          "https://chessvision.ai/"
        ],
        "D": [
          "https://play.google.com/store/apps/details?id=ai.chessvision.scanner",
          "https://ebook.chessvision.ai/",
          "https://ebook.chessvision.ai/",
          "https://apps.apple.com/us/app/chessvision-ai-chess-scanner/id1574933453"
        ],
        "E": [
          "https://chessvision.ai/",
          "https://chessvision.ai/",
          "https://chessvision.ai/",
          "https://chessvision.ai/"
        ],
        "F": [
          "https://chessvision.ai/",
          "https://chessvision.ai/",
          "https://chessvision.ai/",
          "https://chessvision.ai/",
          "https://apps.apple.com/us/app/chessvision-ai-chess-scanner/id1574933453"
        ],
        "G": [
          "https://chessvision.ai/",
          "https://chessvision.ai/",
          "https://chessvision.ai/",
          "https://chessvision.ai/"
        ],
        "H": [
          "https://chessvision.ai/",
          "https://apps.apple.com/us/app/chessvision-ai-chess-scanner/id1574933453",
          "https://chessvision.ai/",
          "https://chessvision.ai/",
          "https://chessvision.ai/"
        ],
        "I": [
          "https://chessvision.ai/",
          "https://chessvision.ai/",
          "https://apps.apple.com/us/app/chessvision-ai-chess-scanner/id1574933453",
          "https://chessvision.ai/"
        ],
        "J": [
          "https://chessvision.ai/",
          "https://chessvision.ai/",
          "https://chessvision.ai/",
          "https://chessvision.ai/"
        ],
        "K": [
          "https://chessvision.ai/",
          "https://chessvision.ai/",
          "https://chessvision.ai/"
        ]
      },
      "sources": [
        "https://chessvision.ai/",
        "https://chessvision.ai/terms/",
        "https://ebook.chessvision.ai/",
        "https://apps.apple.com/us/app/chessvision-ai-chess-scanner/id1574933453",
        "https://apps.apple.com/us/app/id1574933453"
      ],
      "review_url": "https://www.chesspivot.com/en/reviews/chessvision-ai",
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 1.73,
        "criteria": [
          {
            "code": "A1",
            "status": "quota-symbolic",
            "quota": "Free tier have a limited number of scans, and once they're used, you can either wait 24 hours for more scans or upgrade to a Membership.",
            "source_url": "https://play.google.com/store/apps/details?id=ai.chessvision.scanner",
            "note_fr": "Réponse officielle du développeur sur la fiche Play Store : nombre de scans gratuits limité, jamais chiffré publiquement, recharge après 24 h → sous la frontière documentable."
          },
          {
            "code": "A2",
            "status": "quota-symbolic",
            "quota": "Free tier have a limited number of scans, and once they're used, you can either wait 24 hours for more scans or upgrade to a Membership.",
            "source_url": "https://play.google.com/store/apps/details?id=ai.chessvision.scanner",
            "note_fr": "L'évaluation moteur porte sur la position scannée : même quota de scans non chiffré."
          },
          {
            "code": "A3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "A4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "A5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "A7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "A8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "B1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "B2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "B3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "B4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "B5",
            "status": "quota-symbolic",
            "quota": "Free, up to first few diagrams analyzed per document",
            "source_url": "https://ebook.chessvision.ai/",
            "note_fr": "Plan gratuit du lecteur eBook tel que déclaré dans le bundle applicatif servi (vs « Member, unlimited scans ») — quelques diagrammes par document, sans nombre."
          },
          {
            "code": "B6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "C1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "C2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "C3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "C4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "C5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "C6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "C7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "C8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "C9",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://play.google.com/store/apps/details?id=ai.chessvision.scanner",
            "note_fr": "Informationnel — la limite gratuite et son fonctionnement sont documentés publiquement (réponse développeur sur la fiche store)."
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/chessvision-ai-chess-scanner/id1574933453",
            "note_fr": "Informationnel — « $5.99/month ($45.99/year) » affiché sur la fiche App Store."
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/chessvision-ai-chess-scanner/id1574933453",
            "note_fr": "Informationnel — prix affiché sur les fiches stores ; annulation via l'abonnement store."
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/chessvision-ai-chess-scanner/id1574933453",
            "note_fr": "Informationnel — un seul abonnement « $5.99/month ($45.99/year) »."
          },
          {
            "code": "E1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "E2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "E3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessvision.ai/",
            "note_fr": "Informationnel — « AI and computer vision », sans paramètres ; page publique."
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessvision.ai/",
            "note_fr": "Informationnel — discours factuel (prix ChessTech 2020)."
          },
          {
            "code": "F1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "F2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "F3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "F4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "F5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/chessvision-ai-chess-scanner/id1574933453",
            "note_fr": "Informationnel — version et date visibles sur la fiche App Store."
          },
          {
            "code": "G1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "G2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "G3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "G4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessvision.ai/",
            "note_fr": "Informationnel — extensions, iOS, Android, web."
          },
          {
            "code": "H2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/chessvision-ai-chess-scanner/id1574933453",
            "note_fr": "Informationnel — 4,78/5 sur 1 022 avis (fiche publique)."
          },
          {
            "code": "H3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessvision.ai/",
            "note_fr": "Informationnel — service en ligne ; aucun incident signalé."
          },
          {
            "code": "I1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "I2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "I3",
            "status": "quota-symbolic",
            "quota": "Free tier have a limited number of scans, and once they're used, you can either wait 24 hours for more scans or upgrade to a Membership.",
            "source_url": "https://play.google.com/store/apps/details?id=ai.chessvision.scanner",
            "note_fr": "La saisie d'une position de club passe par le scan (« from prints and 2d digital sources ») : même quota de scans non chiffré."
          },
          {
            "code": "I4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "J2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessvision.ai/",
            "note_fr": "Bots Reddit/Discord/Telegram publics et gratuits d'accès ; activité non mesurée."
          },
          {
            "code": "J3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessvision.ai/",
            "note_fr": "Informationnel — aucune ludification."
          },
          {
            "code": "K1",
            "status": "quota-symbolic",
            "quota": "Free tier have a limited number of scans, and once they're used, you can either wait 24 hours for more scans or upgrade to a Membership.",
            "source_url": "https://play.google.com/store/apps/details?id=ai.chessvision.scanner",
            "note_fr": "L'export vers des études Lichess/Chess.com porte sur des positions scannées, elles-mêmes sous le quota de scans gratuit non chiffré."
          },
          {
            "code": "K2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Fonction absente (note 0)."
          },
          {
            "code": "K3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessvision.ai/",
            "note_fr": "Informationnel — intégrations Lichess/Chess.com documentées, pas d'API publique ; vaut en gratuit comme en payant."
          }
        ]
      }
    },
    {
      "slug": "new-in-chess-app-plus-magazine",
      "name": "New in Chess (app + magazine)",
      "url": "https://www.newinchess.com/",
      "kind": "platform",
      "type": {
        "en": "chess magazine and book publisher",
        "fr": "magazine et éditeur de livres d’échecs"
      },
      "price": {
        "en": "€109.99/yr for the first year then €79.99/yr (annual subscription shown, 6 issues + digital access)",
        "fr": "109,99 €/an la 1re année puis 79,99 €/an (abonnement annuel affiché, 6 numéros + accès numérique)"
      },
      "languages": 15,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 1.75,
      "unweighted_score": 1.9,
      "category_scores": {
        "A": 0.4,
        "B": 1.7,
        "C": 0.4,
        "D": 2.5,
        "E": 2.5,
        "F": 5.3,
        "G": 0,
        "H": 5.3,
        "I": 0,
        "J": 1.7,
        "K": 1.1
      },
      "scores": {
        "A": [
          0,
          1,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          0,
          0,
          0,
          1,
          0,
          2
        ],
        "C": [
          0,
          0,
          0,
          1,
          0,
          0,
          0,
          0,
          0
        ],
        "D": [
          1,
          1,
          1,
          0
        ],
        "E": [
          0,
          2,
          0,
          1
        ],
        "F": [
          1,
          3,
          2,
          0,
          2
        ],
        "G": [
          0,
          0,
          0,
          0
        ],
        "H": [
          3,
          2,
          2,
          0,
          1
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          0,
          0,
          0,
          2
        ],
        "K": [
          0,
          1,
          0
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": null
    },
    {
      "slug": "chess-endgame-trainer-propersh-ios",
      "name": "Chess Endgame Trainer (Propersh, iOS)",
      "url": "https://apps.apple.com/us/app/chess-endgame-trainer/id1066381775",
      "kind": "platform",
      "type": {
        "en": "endgame puzzles to play out",
        "fr": "puzzles de finales à jouer"
      },
      "price": {
        "en": "Free (€0) — App Store id1066381775: \"Free\", no in-app purchase listed.",
        "fr": "Gratuit (0 €) — App Store id1066381775 : « Free », aucun achat intégré listé."
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 1.73,
      "unweighted_score": 1.46,
      "category_scores": {
        "A": 0,
        "B": 0,
        "C": 0.7,
        "D": 9.2,
        "E": 1.7,
        "F": 0.7,
        "G": 0.8,
        "H": 1.3,
        "I": 0,
        "J": 1.7,
        "K": 0
      },
      "scores": {
        "A": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "C": [
          0,
          0,
          2,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "D": [
          3,
          3,
          2,
          3
        ],
        "E": [
          0,
          0,
          0,
          2
        ],
        "F": [
          0,
          0,
          1,
          0,
          0
        ],
        "G": [
          0,
          1,
          0,
          0
        ],
        "H": [
          1,
          0,
          0,
          0,
          1
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          0,
          0,
          0,
          2
        ],
        "K": [
          0,
          0,
          0
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 1.73,
        "criteria": [
          {
            "code": "A1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "A2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "A3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "A4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "A5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "A7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "A8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "B1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "B2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "B3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "B4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "B5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "B6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "C1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "C2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "C3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/chess-endgame-trainer/id1066381775",
            "note_fr": "App gratuite sans achat intégré (\"formattedPrice\":\"Free\") : les « over 60,000 endgames » à jouer contre l’ordinateur sont tous en accès gratuit."
          },
          {
            "code": "C4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "C5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "C6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "C7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "C8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "C9",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://itunes.apple.com/lookup?id=1066381775",
            "note_fr": "App entièrement gratuite — lookup App Store : \"price\":0.00, \"formattedPrice\":\"Free\", aucun achat intégré listé : tout le contenu de l’app est en accès gratuit."
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://itunes.apple.com/lookup?id=1066381775",
            "note_fr": "App entièrement gratuite — lookup App Store : \"price\":0.00, \"formattedPrice\":\"Free\", aucun achat intégré listé : tout le contenu de l’app est en accès gratuit."
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://itunes.apple.com/lookup?id=1066381775",
            "note_fr": "Critère informationnel — prix (0 €) affiché publiquement sur la fiche App Store."
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://itunes.apple.com/lookup?id=1066381775",
            "note_fr": "App entièrement gratuite — lookup App Store : \"price\":0.00, \"formattedPrice\":\"Free\", aucun achat intégré listé : tout le contenu de l’app est en accès gratuit."
          },
          {
            "code": "E1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "E2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "E3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://itunes.apple.com/lookup?id=1066381775",
            "note_fr": "App entièrement gratuite — lookup App Store : \"price\":0.00, \"formattedPrice\":\"Free\", aucun achat intégré listé : tout le contenu de l’app est en accès gratuit."
          },
          {
            "code": "F1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "F2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "F3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://itunes.apple.com/lookup?id=1066381775",
            "note_fr": "App entièrement gratuite — lookup App Store : \"price\":0.00, \"formattedPrice\":\"Free\", aucun achat intégré listé : tout le contenu de l’app est en accès gratuit."
          },
          {
            "code": "F4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "F5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "G1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "G2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/chess-endgame-trainer/id1066381775",
            "note_fr": "Jouer les finales contre l’ordinateur = cœur de l’app gratuite, sans achat intégré."
          },
          {
            "code": "G3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "G4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/chess-endgame-trainer/id1066381775",
            "note_fr": "Critère informationnel — plateforme iOS, app gratuite."
          },
          {
            "code": "H2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "H3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/chess-endgame-trainer/id1066381775",
            "note_fr": "Critère informationnel — hors-ligne non documenté, aucun incident ; vaut à l’identique en gratuit (app entièrement gratuite)."
          },
          {
            "code": "I1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "I2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "I3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "I4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "J2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "J3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/chess-endgame-trainer/id1066381775",
            "note_fr": "Critère informationnel — aucune mécanique d’engagement ; publicités tierces dans la version gratuite (unique version)."
          },
          {
            "code": "K1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "K2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "K3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          }
        ]
      }
    },
    {
      "slug": "chess-evaluation-training",
      "name": "Chess Evaluation Training",
      "url": "https://www.chessevaluationtraining.com/",
      "kind": "platform",
      "type": {
        "en": "position evaluation exercise",
        "fr": "exercice d’évaluation de positions"
      },
      "price": {
        "en": "Free (€0) — web app with no account and no price (chessevaluationtraining.com).",
        "fr": "Gratuit (0 €) — application web sans compte ni tarif (chessevaluationtraining.com)."
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 1.73,
      "unweighted_score": 1.45,
      "category_scores": {
        "A": 0,
        "B": 0,
        "C": 0.7,
        "D": 9.2,
        "E": 1.7,
        "F": 0.7,
        "G": 0,
        "H": 2,
        "I": 0,
        "J": 1.7,
        "K": 0
      },
      "scores": {
        "A": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "C": [
          0,
          0,
          0,
          2,
          0,
          0,
          0,
          0,
          0
        ],
        "D": [
          3,
          3,
          2,
          3
        ],
        "E": [
          0,
          0,
          0,
          2
        ],
        "F": [
          0,
          0,
          1,
          0,
          0
        ],
        "G": [
          0,
          0,
          0,
          0
        ],
        "H": [
          1,
          0,
          0,
          1,
          1
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          0,
          0,
          0,
          2
        ],
        "K": [
          0,
          0,
          0
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 1.73,
        "criteria": [
          {
            "code": "A1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "A2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "A3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "A4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "A5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "A7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "A8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "B1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "B2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "B3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "B4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "B5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "B6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "C1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "C2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "C3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "C4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessevaluationtraining.com/",
            "note_fr": "L’exercice « White is better / Black is better » est l’unique fonction du site, gratuite et sans compte (« a free tool to help train your ability to evaluate chess positions ») ; aucun quota dans le bundle JS."
          },
          {
            "code": "C5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "C6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "C7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "C8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "C9",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessevaluationtraining.com/",
            "note_fr": "Site entièrement gratuit, sans compte ni offre payante — meta description : « Chess Evaluation Training is a free tool to help train your ability to evaluate chess positions » ; le bundle JS ne contient aucune chaîne premium/price/subscribe/login (constaté le 2026-09-02)."
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessevaluationtraining.com/",
            "note_fr": "Site entièrement gratuit, sans compte ni offre payante — meta description : « Chess Evaluation Training is a free tool to help train your ability to evaluate chess positions » ; le bundle JS ne contient aucune chaîne premium/price/subscribe/login (constaté le 2026-09-02)."
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessevaluationtraining.com/",
            "note_fr": "Site entièrement gratuit, sans compte ni offre payante — meta description : « Chess Evaluation Training is a free tool to help train your ability to evaluate chess positions » ; le bundle JS ne contient aucune chaîne premium/price/subscribe/login (constaté le 2026-09-02)."
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessevaluationtraining.com/",
            "note_fr": "Site entièrement gratuit, sans compte ni offre payante — meta description : « Chess Evaluation Training is a free tool to help train your ability to evaluate chess positions » ; le bundle JS ne contient aucune chaîne premium/price/subscribe/login (constaté le 2026-09-02)."
          },
          {
            "code": "E1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "E2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "E3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessevaluationtraining.com/",
            "note_fr": "Site entièrement gratuit, sans compte ni offre payante — meta description : « Chess Evaluation Training is a free tool to help train your ability to evaluate chess positions » ; le bundle JS ne contient aucune chaîne premium/price/subscribe/login (constaté le 2026-09-02)."
          },
          {
            "code": "F1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "F2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "F3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessevaluationtraining.com/",
            "note_fr": "Site entièrement gratuit, sans compte ni offre payante — meta description : « Chess Evaluation Training is a free tool to help train your ability to evaluate chess positions » ; le bundle JS ne contient aucune chaîne premium/price/subscribe/login (constaté le 2026-09-02)."
          },
          {
            "code": "F4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "F5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "G1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "G2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "G3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "G4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessevaluationtraining.com/manifest.json",
            "note_fr": "Critère informationnel — PWA web « display: standalone », accessible gratuitement."
          },
          {
            "code": "H2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "H3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "H4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessevaluationtraining.com/",
            "note_fr": "Site entièrement gratuit, sans compte ni offre payante — meta description : « Chess Evaluation Training is a free tool to help train your ability to evaluate chess positions » ; le bundle JS ne contient aucune chaîne premium/price/subscribe/login (constaté le 2026-09-02)."
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessevaluationtraining.com/manifest.json",
            "note_fr": "Critère informationnel — PWA, hors-ligne non démontré ; vaut à l’identique en gratuit (site entièrement gratuit)."
          },
          {
            "code": "I1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "I2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "I3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "I4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "J2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "J3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.chessevaluationtraining.com/",
            "note_fr": "Site entièrement gratuit, sans compte ni offre payante — meta description : « Chess Evaluation Training is a free tool to help train your ability to evaluate chess positions » ; le bundle JS ne contient aucune chaîne premium/price/subscribe/login (constaté le 2026-09-02)."
          },
          {
            "code": "K1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "K2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "K3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          }
        ]
      }
    },
    {
      "slug": "chess-steps-chess-tutor",
      "name": "Chess-Steps / Chess Tutor",
      "url": "https://www.stappenmethode.nl/en/",
      "kind": "platform",
      "type": {
        "en": "step method, Windows software",
        "fr": "méthode par étapes, logiciel Windows"
      },
      "price": {
        "en": "Chess Tutor: €19.95 per Step (Steps 1-3 available) = €59.85 one-off for the 3 programs (rule: single price shown, no subscription); books sold separately.",
        "fr": "Chess Tutor : 19,95 € par Step (Steps 1-3 disponibles) = 59,85 € en achat unique pour les 3 logiciels (règle : prix unique affiché, pas d’abonnement) ; livres vendus à part."
      },
      "languages": 4,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 1.73,
      "unweighted_score": 1.81,
      "category_scores": {
        "A": 0,
        "B": 0.6,
        "C": 1.9,
        "D": 3.3,
        "E": 2.5,
        "F": 5.3,
        "G": 0.8,
        "H": 2.7,
        "I": 0,
        "J": 1.7,
        "K": 1.1
      },
      "scores": {
        "A": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          0,
          0,
          0,
          0,
          0,
          1
        ],
        "C": [
          0,
          1,
          1,
          1,
          0,
          0,
          1,
          0,
          1
        ],
        "D": [
          0,
          2,
          1,
          1
        ],
        "E": [
          1,
          0,
          1,
          1
        ],
        "F": [
          3,
          1,
          2,
          2,
          0
        ],
        "G": [
          0,
          1,
          0,
          0
        ],
        "H": [
          0,
          0,
          1,
          0,
          3
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          0,
          0,
          0,
          2
        ],
        "K": [
          0,
          1,
          0
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": null
    },
    {
      "slug": "nextchessmove",
      "name": "NextChessMove",
      "url": "https://nextchessmove.com/",
      "kind": "platform",
      "type": {
        "en": "best-move calculator",
        "fr": "calculateur de meilleur coup"
      },
      "price": {
        "en": "free on the web with ads (https://nextchessmove.com/privacy-policy: Freestar); iOS app $2.99 + \"NCM Pro\" $18.99/yr ≈ €17.5 (https://apps.apple.com/us/app/next-chess-move/id595697977); rule: annual price shown",
        "fr": "web gratuit avec publicité (https://nextchessmove.com/privacy-policy : Freestar) ; app iOS 2,99 $ + « NCM Pro » 18,99 $/an ≈ 17,5 € (https://apps.apple.com/us/app/next-chess-move/id595697977) ; règle : annuel affiché"
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 1.72,
      "unweighted_score": 1.88,
      "category_scores": {
        "A": 0.8,
        "B": 0,
        "C": 0,
        "D": 5.8,
        "E": 5,
        "F": 0.7,
        "G": 0,
        "H": 4,
        "I": 0.8,
        "J": 2.5,
        "K": 1.1
      },
      "scores": {
        "A": [
          1,
          1,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "C": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "D": [
          3,
          3,
          1,
          0
        ],
        "E": [
          0,
          2,
          2,
          2
        ],
        "F": [
          0,
          0,
          0,
          0,
          1
        ],
        "G": [
          0,
          0,
          0,
          0
        ],
        "H": [
          2,
          2,
          0,
          0,
          2
        ],
        "I": [
          0,
          0,
          1,
          0
        ],
        "J": [
          0,
          1,
          0,
          2
        ],
        "K": [
          0,
          0,
          1
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 1.65,
        "criteria": [
          {
            "code": "A1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://nextchessmove.com/",
            "note_fr": "Saisie manuelle de la position sur le calculateur web gratuit, sans compte : « Drag pieces to configure the board and press Calculate next move ». Aucun quota publié pour le calcul de base (financé par la publicité) ; seul NCM Pro (matériel cloud) est payant."
          },
          {
            "code": "A2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://nextchessmove.com/",
            "note_fr": "Le calcul du meilleur coup est la fonction de base du site, gratuite et sans compte ; en version gratuite le moteur tourne en local (défaut « useLocal:true » dans l’app JS du site). Le payant (NCM Pro, « $19 » / an, texte de l’app : « Upgrade to a full year of unlimited calculations ») ne vend que le matériel cloud (Ryzen 7950X, RTX 2080, syzygy) — l’essai Pro de « 10 minutes of calculation time » est un essai, pas du gratuit."
          },
          {
            "code": "A3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "A4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "A5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "A7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "A8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "B1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "B2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "B3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "B4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "B5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "B6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "C1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "C2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "C3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "C4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "C5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "C6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "C7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "C8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "C9",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://nextchessmove.com/",
            "note_fr": "Critère informationnel — le périmètre gratuit (calculateur web avec publicité) est constatable sur la page publique."
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/next-chess-move/id595697977",
            "note_fr": "Critère informationnel — prix publics : app iOS 2,99 $ + achat intégré « NCM Pro » annuel ; texte de l’app web : abonnement Pro « $19 » / an, « No auto renewals »."
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/next-chess-move/id595697977",
            "note_fr": "Critère informationnel — prix affichés publiquement (fiche App Store, app web)."
          },
          {
            "code": "D4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "E1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "E2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/next-chess-move/id595697977",
            "note_fr": "Critère informationnel — sortie moteur brute (Stockfish 18/17.1, Lc0 0.31.2 listés dans l’app web) ; vaut en gratuit comme en payant."
          },
          {
            "code": "E3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/next-chess-move/id595697977",
            "note_fr": "Critère informationnel — moteurs et matériel nommés publiquement (« runs Stockfish 17.1 directly on your device », Ryzen 7950X, RTX 2080, syzygy)."
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://nextchessmove.com/",
            "note_fr": "Critère informationnel — discours factuel, vérifiable sur la page publique."
          },
          {
            "code": "F1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "F2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "F3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "F4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "F5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://itunes.apple.com/lookup?id=595697977",
            "note_fr": "Critère informationnel — v5.2.0 du 2026-02-02 (« Upgrading to Stockfish 18 »), fiche publique."
          },
          {
            "code": "G1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "G2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "G3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "G4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://nextchessmove.com/",
            "note_fr": "Critère informationnel — web gratuit + app iOS (2,99 $) ; le web suffit à l’usage gratuit."
          },
          {
            "code": "H2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/next-chess-move/id595697977",
            "note_fr": "Critère informationnel — notes du store publiques."
          },
          {
            "code": "H3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "H5",
            "status": "paid",
            "quota": null,
            "source_url": "https://itunes.apple.com/lookup?id=595697977",
            "note_fr": "L’usage hors-ligne établi (« a powerful chess calculator that runs Stockfish 17.1 directly on your device ») est celui de l’app iOS, vendue 2,99 $ (« price »: 2.99) — donc réservé à un achat ; rien ne documente un hors-ligne de la version web gratuite."
          },
          {
            "code": "I1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "I2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "I3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://nextchessmove.com/",
            "note_fr": "Reconstituer une position jouée au club se fait en glissant les pièces sur le calculateur web gratuit (« Drag pieces to configure the board ») ; pas de photo/scan."
          },
          {
            "code": "I4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "J2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://forums.nextchessmove.com/",
            "note_fr": "Critère informationnel — forum public, lisible sans compte ni paiement."
          },
          {
            "code": "J3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://nextchessmove.com/",
            "note_fr": "Critère informationnel — aucune mécanique d’engagement sur la version gratuite."
          },
          {
            "code": "K1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "K2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "K3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://nextchessmove.com/",
            "note_fr": "Critère informationnel — la saisie FEN/position fait partie du calculateur web gratuit ; pas d’API publique."
          }
        ]
      }
    },
    {
      "slug": "chessmatec-chessworld",
      "name": "ChessMatec / ChessWorld",
      "url": "https://www.chessworld.io/",
      "kind": "platform",
      "type": {
        "en": "playful learning for children and schools",
        "fr": "apprentissage ludique enfants et écoles"
      },
      "price": {
        "en": "$49.99/yr \"Home Subscription Yearly\" ≈ €46 (https://www.chessworld.io/, https://apps.apple.com/us/app/chessworld-chess-for-kids/id1112656776); rule: annual price shown",
        "fr": "49,99 $/an « Home Subscription Yearly » ≈ 46 € (https://www.chessworld.io/, https://apps.apple.com/us/app/chessworld-chess-for-kids/id1112656776) ; règle : annuel affiché"
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 1.71,
      "unweighted_score": 2,
      "category_scores": {
        "A": 0,
        "B": 0,
        "C": 0.7,
        "D": 5.8,
        "E": 0.8,
        "F": 4.7,
        "G": 0.8,
        "H": 4,
        "I": 0.8,
        "J": 3.3,
        "K": 1.1
      },
      "scores": {
        "A": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "C": [
          0,
          1,
          0,
          0,
          0,
          0,
          0,
          0,
          1
        ],
        "D": [
          1,
          2,
          1,
          3
        ],
        "E": [
          0,
          0,
          0,
          1
        ],
        "F": [
          1,
          2,
          2,
          1,
          1
        ],
        "G": [
          0,
          1,
          0,
          0
        ],
        "H": [
          3,
          1,
          0,
          0,
          2
        ],
        "I": [
          0,
          0,
          1,
          0
        ],
        "J": [
          0,
          0,
          2,
          2
        ],
        "K": [
          0,
          1,
          0
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": null
    },
    {
      "slug": "socialchess",
      "name": "SocialChess",
      "url": "https://www.socialchess.com",
      "kind": "platform",
      "type": {
        "en": "Correspondence chess app",
        "fr": "Appli de parties par correspondance"
      },
      "price": {
        "en": "$14.99/yr ≈ €14 (annual in-app purchase shown on the App Store; $1 ≈ €0.92)",
        "fr": "14,99 $/an ≈ 14 € (achat intégré annuel affiché sur l’App Store ; 1 $ ≈ 0,92 €)"
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 1.67,
      "unweighted_score": 1.91,
      "category_scores": {
        "A": 1.3,
        "B": 0,
        "C": 0,
        "D": 5.8,
        "E": 1.7,
        "F": 1.3,
        "G": 0.8,
        "H": 4,
        "I": 1.7,
        "J": 3.3,
        "K": 1.1
      },
      "scores": {
        "A": [
          0,
          0,
          1,
          0,
          0,
          0,
          1,
          1
        ],
        "B": [
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "C": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "D": [
          2,
          3,
          2,
          0
        ],
        "E": [
          0,
          0,
          0,
          2
        ],
        "F": [
          0,
          0,
          0,
          0,
          2
        ],
        "G": [
          1,
          0,
          0,
          0
        ],
        "H": [
          2,
          3,
          0,
          0,
          1
        ],
        "I": [
          1,
          0,
          0,
          1
        ],
        "J": [
          0,
          2,
          0,
          2
        ],
        "K": [
          0,
          1,
          0
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 1.63,
        "criteria": [
          {
            "code": "A1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "A2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "A3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://itunes.apple.com/lookup?id=442239737",
            "note_fr": "App gratuite (« formattedPrice »:\"Free\") ; « Statistics - ELO Rating, Wins, Losses, Draws » listé parmi les GAME FEATURES sans mention d’achat — le seul achat intégré documenté porte sur le nombre de parties simultanées."
          },
          {
            "code": "A4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "A5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "A7",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://itunes.apple.com/lookup?id=442239737",
            "note_fr": "« Elo Charts & Per Opponent statistics » listé parmi les fonctions de l’app gratuite ; seul l’achat intégré « increase it to 100 » (parties simultanées) est payant."
          },
          {
            "code": "A8",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://itunes.apple.com/lookup?id=442239737",
            "note_fr": "« Elo Rankings » listé parmi les SOCIAL FEATURES de l’app gratuite, sans gating documenté."
          },
          {
            "code": "B1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "B2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "B3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "B4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "B5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "B6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "C1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "C2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "C3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "C4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "C5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "C6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "C7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "C8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "C9",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://itunes.apple.com/lookup?id=442239737",
            "note_fr": "Critère informationnel — le périmètre gratuit est publié sur la fiche store (« Play up to 5 games at a time, or increase it to 100 with In-App purchase »)."
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/socialchess-online-chess/id442239737",
            "note_fr": "Critère informationnel — prix de l’achat intégré affiché sur la fiche store publique."
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/socialchess-online-chess/id442239737",
            "note_fr": "Critère informationnel — gratuit permanent, achat géré par le store."
          },
          {
            "code": "D4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "E1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "E2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "E3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/socialchess-online-chess/id442239737",
            "note_fr": "Critère informationnel — discours factuel de la fiche store."
          },
          {
            "code": "F1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "F2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "F3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "F4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "F5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://itunes.apple.com/lookup?id=442239737",
            "note_fr": "Critère informationnel — version 2026.06.1 du 2026-06-17 (fiche publique)."
          },
          {
            "code": "G1",
            "status": "quota-real",
            "quota": "Play up to 5 games at a time, or increase it to 100 with In-App purchase.",
            "source_url": "https://itunes.apple.com/lookup?id=442239737",
            "note_fr": "5 parties simultanées en gratuit (correspondance + parties rapides) : de quoi jouer réellement chaque jour — au-dessus de la frontière du quota symbolique ; l’achat intégré ne fait que porter la limite à 100."
          },
          {
            "code": "G2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "G3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "G4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/socialchess-online-chess/id442239737",
            "note_fr": "Critère informationnel — iOS/iPad/Mac/Vision + Android, app gratuite."
          },
          {
            "code": "H2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/socialchess-online-chess/id442239737",
            "note_fr": "Critère informationnel — 4,7/5 sur 7 198 notes (lookup public)."
          },
          {
            "code": "H3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://itunes.apple.com/lookup?id=442239737",
            "note_fr": "« Play even when there is no internet connection. Moves are sent later. » — fonction listée dans l’app gratuite, sans gating."
          },
          {
            "code": "I1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://itunes.apple.com/lookup?id=442239737",
            "note_fr": "« Browse your opponent’s games, and their opponent’s games » listé parmi les SOCIAL FEATURES de l’app gratuite, sans gating documenté."
          },
          {
            "code": "I2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "I3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "I4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://itunes.apple.com/lookup?id=442239737",
            "note_fr": "« Elo Charts & Per Opponent statistics » et la liste des parties font partie de l’app gratuite ; aucun filtre avancé documenté, mais rien de payant."
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "J2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://play.google.com/store/apps/details?id=com.woodchop.chess",
            "note_fr": "Critère informationnel — 100 K+ installations, 9,58 K avis (fiche Play publique)."
          },
          {
            "code": "J3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://itunes.apple.com/lookup?id=442239737",
            "note_fr": "Critère informationnel — « No Advertisements! », pas de monnaie virtuelle ; vaut pour la version gratuite."
          },
          {
            "code": "K1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "K2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/socialchess-online-chess/id442239737",
            "note_fr": "Critère informationnel — labels de confidentialité App Store publics ; vaut en gratuit comme en payant."
          },
          {
            "code": "K3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          }
        ]
      }
    },
    {
      "slug": "opponent-insights-extension-chrome",
      "name": "Opponent Insights (extension Chrome)",
      "url": "https://chromewebstore.google.com/detail/chesscomlichess-opponent/ldopalelffalhfdpfnljnepkglbocdgg",
      "kind": "platform",
      "type": {
        "en": "opponent statistics browser extension",
        "fr": "extension de statistiques sur l’adversaire"
      },
      "price": {
        "en": "Free — rule: free (Chrome extension with no purchase).",
        "fr": "Gratuit — règle : gratuit (extension Chrome sans achat)."
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 1.67,
      "unweighted_score": 1.55,
      "category_scores": {
        "A": 0,
        "B": 0,
        "C": 0,
        "D": 10,
        "E": 1.7,
        "F": 0,
        "G": 0,
        "H": 0.7,
        "I": 0.8,
        "J": 1.7,
        "K": 2.2
      },
      "scores": {
        "A": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "C": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "D": [
          3,
          3,
          3,
          3
        ],
        "E": [
          0,
          0,
          1,
          1
        ],
        "F": [
          0,
          0,
          0,
          0,
          0
        ],
        "G": [
          0,
          0,
          0,
          0
        ],
        "H": [
          0,
          0,
          0,
          0,
          1
        ],
        "I": [
          1,
          0,
          0,
          0
        ],
        "J": [
          0,
          0,
          0,
          2
        ],
        "K": [
          0,
          2,
          0
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 1.67,
        "criteria": [
          {
            "code": "A1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "A2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "A3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "A4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "A5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "A7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "A8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "B1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "B2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "B3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "B4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "B5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "B6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "C1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "C2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "C3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "C4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "C5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "C6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "C7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "C8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "C9",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chromewebstore.google.com/detail/chesscomlichess-opponent/ldopalelffalhfdpfnljnepkglbocdgg",
            "note_fr": "Extension Chrome gratuite, aucun achat ni palier payant sur la fiche Chrome Web Store : toute fonction listée est en accès gratuit."
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chromewebstore.google.com/detail/chesscomlichess-opponent/ldopalelffalhfdpfnljnepkglbocdgg",
            "note_fr": "Extension Chrome gratuite, aucun achat ni palier payant sur la fiche Chrome Web Store : toute fonction listée est en accès gratuit."
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chromewebstore.google.com/detail/chesscomlichess-opponent/ldopalelffalhfdpfnljnepkglbocdgg",
            "note_fr": "Extension Chrome gratuite, aucun achat ni palier payant sur la fiche Chrome Web Store : toute fonction listée est en accès gratuit."
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chromewebstore.google.com/detail/chesscomlichess-opponent/ldopalelffalhfdpfnljnepkglbocdgg",
            "note_fr": "Extension Chrome gratuite, aucun achat ni palier payant sur la fiche Chrome Web Store : toute fonction listée est en accès gratuit."
          },
          {
            "code": "E1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "E2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "E3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chromewebstore.google.com/detail/chesscomlichess-opponent/ldopalelffalhfdpfnljnepkglbocdgg",
            "note_fr": "Critère informationnel — description publique des statistiques affichées ; vaut à l’identique en gratuit (extension gratuite)."
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chromewebstore.google.com/detail/chesscomlichess-opponent/ldopalelffalhfdpfnljnepkglbocdgg",
            "note_fr": "Critère informationnel — formulations marketing constatables sur la fiche publique."
          },
          {
            "code": "F1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "F2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "F3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "F4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "F5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "G1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "G2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "G3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "G4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "H1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "H2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "H3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chromewebstore.google.com/detail/chesscomlichess-opponent/ldopalelffalhfdpfnljnepkglbocdgg",
            "note_fr": "Critère informationnel — dépend des API Chess.com/Lichess ; aucun incident signalé ; extension gratuite."
          },
          {
            "code": "I1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chromewebstore.google.com/detail/chesscomlichess-opponent/ldopalelffalhfdpfnljnepkglbocdgg",
            "note_fr": "Bilan, temps par coup et « past game openings » de l’adversaire : fonctions de l’extension gratuite, sans achat."
          },
          {
            "code": "I2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "I3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "I4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "J2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "J3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chromewebstore.google.com/detail/chesscomlichess-opponent/ldopalelffalhfdpfnljnepkglbocdgg",
            "note_fr": "Extension Chrome gratuite, aucun achat ni palier payant sur la fiche Chrome Web Store : toute fonction listée est en accès gratuit."
          },
          {
            "code": "K1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "K2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chromewebstore.google.com/detail/chesscomlichess-opponent/ldopalelffalhfdpfnljnepkglbocdgg",
            "note_fr": "Critère informationnel — « will not collect or use your data » sur la fiche publique."
          },
          {
            "code": "K3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          }
        ]
      }
    },
    {
      "slug": "europe-echecs",
      "name": "Europe Échecs",
      "url": "https://www.europe-echecs.com/",
      "kind": "platform",
      "type": {
        "en": "French media outlet with a play zone",
        "fr": "Média FR avec zone de jeu"
      },
      "price": {
        "en": "€96/yr for the first year, €99.90 on renewal (annual price shown, Pack Intégral); €149.90 / 2 years",
        "fr": "96 €/an la 1ʳᵉ année, 99,90 € au renouvellement (annuel affiché, Pack Intégral) ; 149,90 € / 2 ans"
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 1.66,
      "unweighted_score": 1.81,
      "category_scores": {
        "A": 0.4,
        "B": 0.6,
        "C": 0.7,
        "D": 4.2,
        "E": 1.7,
        "F": 4,
        "G": 1.7,
        "H": 3.3,
        "I": 0,
        "J": 3.3,
        "K": 0
      },
      "scores": {
        "A": [
          0,
          1,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          0,
          0,
          0,
          0,
          0,
          1
        ],
        "C": [
          0,
          1,
          0,
          1,
          0,
          0,
          0,
          0,
          0
        ],
        "D": [
          2,
          1,
          1,
          1
        ],
        "E": [
          0,
          0,
          0,
          2
        ],
        "F": [
          1,
          0,
          2,
          0,
          3
        ],
        "G": [
          1,
          1,
          0,
          0
        ],
        "H": [
          3,
          1,
          0,
          0,
          1
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          1,
          1,
          0,
          2
        ],
        "K": [
          0,
          0,
          0
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 1.28,
        "criteria": [
          {
            "code": "A1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "A2",
            "status": "quota-symbolic",
            "quota": "Analyse de parties — Compte gratuit : « 1 / jour » (Pack Jeu + et Pack Intégral : « Illimité »)",
            "source_url": "https://www.europe-echecs.com/abonnement.html",
            "note_fr": "Le tableau « Comparez nos packs » de la page abonnement donne 1 analyse de partie par jour au compte gratuit — exactement la frontière du quota symbolique (1 analyse/jour)."
          },
          {
            "code": "A3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "A4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "A5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "A7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "A8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "B1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "B2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "B3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "B4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "B5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "B6",
            "status": "paid",
            "quota": null,
            "source_url": "https://www.europe-echecs.com/abonnement.html",
            "note_fr": "Ligne « Leçons par thèmes » du comparatif : cochée pour le seul Pack Intégral (99,90 €/an), cellules Compte gratuit et Pack Jeu + vides ; « Toutes nos leçons » est un argument de vente du Pack Intégral."
          },
          {
            "code": "C1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "C2",
            "status": "quota-real",
            "quota": "Exercices tactiques — Compte gratuit : « 5 / jour » ; Mode Challenge : « 1 / jour » ; Entraînement thématique : « Séries gratuites » (packs : « Illimité »)",
            "source_url": "https://www.europe-echecs.com/abonnement.html",
            "note_fr": "5 exercices tactiques par jour en gratuit : au seuil des ≥ 5 usages/jour, donc usage quotidien réel ; l’illimité est vendu avec les packs (39,90 €/an et plus)."
          },
          {
            "code": "C3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "C4",
            "status": "paid",
            "quota": null,
            "source_url": "https://www.europe-echecs.com/abonnement.html",
            "note_fr": "Les leçons commentées (dont « Stratégie (732) ») relèvent de la ligne « Leçons par thèmes », réservée au Pack Intégral dans le comparatif ; le catalogue public ne montre que titres et résumés."
          },
          {
            "code": "C5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "C6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "C7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "C8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "C9",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.europe-echecs.com/abonnement.html",
            "note_fr": "Critère informationnel — la colonne « Compte gratuit » du comparatif publie le périmètre gratuit (jeu en direct, 3 parties différées simultanées, ELO, 1 analyse/jour, 5 exercices tactiques/jour)."
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.europe-echecs.com/abonnement.html",
            "note_fr": "Critère informationnel — Pack Intégral affiché 99,90 €/an (149,90 € pour 2 ans) sur la page publique."
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.europe-echecs.com/abonnement.html",
            "note_fr": "Critère informationnel — prix affichés, « Paiement unique — Renouvellement manuel », mensuel « Auto-renouvelé — Sans engagement » ; ni essai ni remboursement mentionnés."
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.europe-echecs.com/abonnement.html",
            "note_fr": "Critère informationnel — offres publiques : Pack Jeu +, Pack Intégral, Pack Intégral + Revue papier, Revue papier."
          },
          {
            "code": "E1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "E2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "E3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.europe-echecs.com/abonnement-pack-integral.html",
            "note_fr": "Critère informationnel — discours factuel constaté sur les pages publiques."
          },
          {
            "code": "F1",
            "status": "paid",
            "quota": null,
            "source_url": "https://www.europe-echecs.com/abonnement.html",
            "note_fr": "Le classement par niveau (Débutant/Intermédiaire/Avancé sur le catalogue de leçons) porte sur les leçons, réservées au Pack Intégral (ligne « Leçons par thèmes » cochée pour ce seul pack)."
          },
          {
            "code": "F2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "F3",
            "status": "paid",
            "quota": null,
            "source_url": "https://www.europe-echecs.com/abonnement.html",
            "note_fr": "Les formats du contenu pédagogique — vidéos (« Vidéos (+ de 1000 disponibles) », « Minute Stratégie »… « 1 video / semaine ») , leçons, revue en ligne — sont tous dans la colonne Pack Intégral du comparatif, cellules gratuites vides."
          },
          {
            "code": "F4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "F5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.europe-echecs.com/abonnement-pack-integral.html",
            "note_fr": "Critère informationnel — « 5 nouvelles vidéos par semaine », revue mensuelle : rythme publié sur la page publique."
          },
          {
            "code": "G1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.europe-echecs.com/abonnement.html",
            "note_fr": "Comparatif : « Jouer en direct — Standard, Chess960, Battle » coché pour le Compte gratuit (avec publicités tierces) ; seul le jeu en différé est plafonné à « 3 » parties simultanées en gratuit."
          },
          {
            "code": "G2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.europe-echecs.com/jouer-contre-ordinateur.html",
            "note_fr": "Page publique dédiée « Jouer contre l’ordinateur » ; la fonction n’apparaît dans aucune offre payante du comparatif (abonnement.html) — accessible hors abonnement."
          },
          {
            "code": "G3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "G4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.europe-echecs.com/abonnement.html",
            "note_fr": "Critère informationnel — « Applications iOS et Android » cochées dès le Compte gratuit dans le comparatif ; web constaté."
          },
          {
            "code": "H2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/fr/app/simplechess-jeu-d%C3%A9checs/id394634657",
            "note_fr": "Critère informationnel — notes publiques de l’app SimpleChess (3,53/5, 51 avis)."
          },
          {
            "code": "H3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.europe-echecs.com/abonnement.html",
            "note_fr": "Critère informationnel — service en ligne, aucun incident signalé, pas de page statut ; vaut en gratuit comme en payant."
          },
          {
            "code": "I1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "I2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "I3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "I4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "J1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.europe-echecs.com/annonce-tournois-stage-cours-echecs.html",
            "note_fr": "Petites annonces « Tournois, stages et cours d’échecs » (clubs, entraîneurs) : page publique consultable sans compte ni abonnement."
          },
          {
            "code": "J2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.europe-echecs.com/abonnement.html",
            "note_fr": "Critère informationnel — zone de jeu accessible en gratuit, aucun compteur de joueurs publié."
          },
          {
            "code": "J3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://www.europe-echecs.com/abonnement.html",
            "note_fr": "Critère informationnel — classement ELO coché dès le Compte gratuit ; pas de monnaie virtuelle ; publicités tierces en gratuit."
          },
          {
            "code": "K1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "K2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          },
          {
            "code": "K3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente."
          }
        ]
      }
    },
    {
      "slug": "kcf-academy-kasparov-chess-foundation",
      "name": "KCF Academy (Kasparov Chess Foundation)",
      "url": "https://kcfacademy.org/",
      "kind": "platform",
      "type": {
        "en": "live group lessons taught by GMs",
        "fr": "cours collectifs en direct par GM"
      },
      "price": {
        "en": "€450 (Premium package, January-June 2027 season, price shown on kcfacademy.org/programs); Basic €300. Rule: full offer = Premium €450/season.",
        "fr": "450 € (Premium package, saison janvier-juin 2027, prix affiché sur kcfacademy.org/programs) ; Basic 300 €. Règle : offre complète = Premium 450 €/saison."
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 1.64,
      "unweighted_score": 1.97,
      "category_scores": {
        "A": 0,
        "B": 0,
        "C": 1.5,
        "D": 1.7,
        "E": 4.2,
        "F": 8,
        "G": 0.8,
        "H": 1.3,
        "I": 0,
        "J": 4.2,
        "K": 0
      },
      "scores": {
        "A": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "C": [
          0,
          0,
          0,
          1,
          0,
          0,
          1,
          0,
          2
        ],
        "D": [
          0,
          0,
          1,
          1
        ],
        "E": [
          0,
          2,
          1,
          2
        ],
        "F": [
          3,
          3,
          2,
          2,
          2
        ],
        "G": [
          0,
          0,
          0,
          1
        ],
        "H": [
          1,
          0,
          0,
          0,
          1
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          2,
          1,
          0,
          2
        ],
        "K": [
          0,
          0,
          0
        ]
      },
      "evidence_urls": {
        "A": [
          "https://kcfacademy.org/programs",
          "https://kcfacademy.org/programs",
          "https://kcfacademy.org/programs",
          "https://kcfacademy.org/programs",
          "https://kcfacademy.org/programs",
          "https://kcfacademy.org/programs",
          "https://kcfacademy.org/programs",
          "https://kcfacademy.org/programs"
        ],
        "B": [
          "https://kcfacademy.org/programs",
          "https://kcfacademy.org/programs",
          "https://kcfacademy.org/programs",
          "https://kcfacademy.org/programs",
          "https://kcfacademy.org/programs",
          "https://kcfacademy.org/programs"
        ],
        "C": [
          "https://kcfacademy.org/programs",
          "https://app.kcfacademy.org/",
          "https://kcfacademy.org/programs",
          "https://kcfacademy.org/programs",
          "https://kcfacademy.org/programs",
          "https://kcfacademy.org/programs",
          "https://kcfacademy.org/programs",
          "https://kcfacademy.org/programs",
          "https://kcfacademy.org/programs"
        ],
        "D": [
          "https://kcfacademy.org/programs",
          "https://kcfacademy.org/programs",
          "https://kcfacademy.org/programs",
          "https://kcfacademy.org/programs"
        ],
        "E": [
          "https://kcfacademy.org/",
          "https://kcfacademy.org/programs",
          "https://kcfacademy.org/programs",
          "https://kcfacademy.org/programs"
        ],
        "F": [
          "https://kcfacademy.org/programs",
          "https://kcfacademy.org/programs",
          "https://kcfacademy.org/programs",
          "https://kcfacademy.org/",
          "https://kcfacademy.org/programs"
        ],
        "G": [
          "https://kcfacademy.org/programs",
          "https://kcfacademy.org/programs",
          "https://kcfacademy.org/programs",
          "https://kcfacademy.org/programs"
        ],
        "H": [
          "https://app.kcfacademy.org/",
          "https://kcfacademy.org/",
          "https://kcfacademy.org/programs",
          "https://kcfacademy.org/",
          "https://app.kcfacademy.org/"
        ],
        "I": [
          "https://kcfacademy.org/programs",
          "https://kcfacademy.org/programs",
          "https://kcfacademy.org/programs",
          "https://kcfacademy.org/programs"
        ],
        "J": [
          "https://kcfacademy.org/programs",
          "https://kcfacademy.org/programs",
          "https://kcfacademy.org/programs",
          "https://kcfacademy.org/programs"
        ],
        "K": [
          "https://app.kcfacademy.org/",
          "https://kcfacademy.org/privacy-policy",
          "https://kcfacademy.org/"
        ]
      },
      "sources": [
        "https://kcfacademy.org/",
        "https://kcfacademy.org/programs",
        "https://kcfacademy.org/news/press-release/",
        "https://kasparovchessfoundation.org/?p=1858",
        "https://kasparovchessfoundation.org/?page_id=14",
        "https://en.chessbase.com/post/kasparov-chess-foundation-academy-launches-partners-with-chessbase",
        "https://app.kcfacademy.org/",
        "https://kcfacademy.org/privacy-policy"
      ],
      "review_url": "https://www.chesspivot.com/en/reviews/kcf-academy-kasparov-chess-foundation",
      "free_access": null
    },
    {
      "slug": "chessify",
      "name": "Chessify",
      "url": "https://chessify.me/",
      "kind": "platform",
      "type": {
        "en": "On-demand cloud engine analysis",
        "fr": "Analyse moteur cloud à la demande"
      },
      "price": {
        "en": "≈ €322/yr (Master $349.99/yr ≈ €322; Amateur $79.99/yr ≈ €74; GM $1,199.99/yr) — annual, prices hidden from the crawler",
        "fr": "≈ 322 €/an (Master 349,99 $/an ≈ 322 € ; Amateur 79,99 $/an ≈ 74 € ; GM 1 199,99 $/an) — annuel, prix masqués au robot"
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 1.6,
      "unweighted_score": 2.06,
      "category_scores": {
        "A": 0.8,
        "B": 1.1,
        "C": 0.4,
        "D": 3.3,
        "E": 3.3,
        "F": 1.3,
        "G": 0,
        "H": 3.3,
        "I": 4.2,
        "J": 1.7,
        "K": 3.3
      },
      "scores": {
        "A": [
          1,
          1,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          0,
          0,
          0,
          0,
          2,
          0
        ],
        "C": [
          0,
          0,
          1,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "D": [
          2,
          0,
          2,
          0
        ],
        "E": [
          0,
          0,
          2,
          2
        ],
        "F": [
          0,
          0,
          0,
          0,
          2
        ],
        "G": [
          0,
          0,
          0,
          0
        ],
        "H": [
          3,
          2,
          0,
          0,
          0
        ],
        "I": [
          1,
          1,
          2,
          1
        ],
        "J": [
          1,
          1,
          0,
          0
        ],
        "K": [
          2,
          0,
          1
        ]
      },
      "evidence_urls": {
        "A": [
          "https://chessify.me/pricing",
          "https://chessify.me/",
          "https://chessify.me/",
          "https://chessify.me/",
          "https://chessify.me/",
          "https://chessify.me/",
          "https://chessify.me/",
          "https://chessify.me/"
        ],
        "B": [
          "https://chessify.me/",
          "https://chessify.me/",
          "https://chessify.me/",
          "https://chessify.me/",
          "https://chessify.me/",
          "https://chessify.me/"
        ],
        "C": [
          "https://chessify.me/",
          "https://chessify.me/",
          "https://chessify.me/",
          "https://chessify.me/",
          "https://chessify.me/",
          "https://chessify.me/",
          "https://chessify.me/",
          "https://chessify.me/",
          "https://chessify.me/"
        ],
        "D": [
          "https://chessify.me/pricing",
          "https://mychessplan.com/chessify-review-2026/",
          "https://chessify.me/pricing",
          "https://chessify.me/pricing"
        ],
        "E": [
          "https://chessify.me/",
          "https://chessify.me/",
          "https://chessify.me/",
          "https://chessify.me/"
        ],
        "F": [
          "https://chessify.me/",
          "https://chessify.me/",
          "https://chessify.me/",
          "https://chessify.me/",
          "https://apps.apple.com/us/app/chessify-magic-chess-tools/id1397066775"
        ],
        "G": [
          "https://chessify.me/",
          "https://chessify.me/",
          "https://chessify.me/",
          "https://chessify.me/"
        ],
        "H": [
          "https://chessify.me/",
          "https://apps.apple.com/us/app/chessify-magic-chess-tools/id1397066775",
          "https://chessify.me/",
          "https://chessify.me/",
          "https://www.trustpilot.com/review/chessify.me"
        ],
        "I": [
          "https://chessify.me/",
          "https://chessify.me/",
          "https://chessify.me/mobile",
          "https://chessify.me/pricing"
        ],
        "J": [
          "https://chessify.me/pricing",
          "https://chessify.me/",
          "https://chessify.me/",
          "https://chessify.me/pricing"
        ],
        "K": [
          "https://chessify.me/pricing",
          "https://chessify.me/",
          "https://chessify.me/"
        ]
      },
      "sources": [
        "https://chessify.me/",
        "https://chessify.me/about",
        "https://chessify.me/pricing",
        "https://chessify.me/contact",
        "https://chessify.me/blog",
        "https://apps.apple.com/us/app/id1397066775",
        "https://apps.apple.com/us/app/chessify-magic-chess-tools/id1397066775"
      ],
      "review_url": "https://www.chesspivot.com/en/reviews/chessify",
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 1.34,
        "criteria": [
          {
            "code": "A1",
            "status": "quota-symbolic",
            "quota": "1 PGN",
            "source_url": "https://chessify.me/pricing",
            "note_fr": "Import de fichiers PGN possible (App Store : « import your existing files ») mais le plan gratuit ne stocke que « 1 PGN » ; aucun import de compte Chess.com/Lichess."
          },
          {
            "code": "A2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessify.me/",
            "note_fr": "« Analyze at up to 1,000 kN/s speed with Stockfish, asmFish, SugaR, Koivisto, Berserk, ShashChess, RubiChess, Caissa, Crystal, Patricia and Viridithas for FREE when you register » ; pricing : « Unlimited shared server » en gratuit (compte gratuit requis)."
          },
          {
            "code": "A3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "A4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "A5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "A7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "A8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "B1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "B2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "B3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "B4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "B5",
            "status": "paid",
            "quota": null,
            "source_url": "https://chessify.me/pricing",
            "note_fr": "La colonne gratuite du tableau des plans exclut « 10M+ Pro Games Database » et « 2 Million+ ICCF Database » — l’explorateur/statistiques repose sur ces bases payantes."
          },
          {
            "code": "B6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "C1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "C2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "C3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessify.me/pricing",
            "note_fr": "« Syzygy Tablebase » listée dans le plan gratuit (16 threads)."
          },
          {
            "code": "C4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "C5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "C6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "C7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "C8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "C9",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessify.me/pricing",
            "note_fr": "Critère informationnel : la page tarifs publique documente le plan gratuit (16 threads, 1 PGN, Syzygy, serveur partagé illimité)."
          },
          {
            "code": "D2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessify.me/pricing",
            "note_fr": "Critère informationnel : « Chessify offers a 2-day free trial for its Amateur Plan », annulation en ligne — lisible sans payer."
          },
          {
            "code": "D4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "E1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "E2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "E3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessify.me/",
            "note_fr": "Critère informationnel : moteurs nommés, vitesses kN/s et threads publiés sur la page publique."
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessify.me/",
            "note_fr": "Critère informationnel : discours factuel vérifiable sur la page publique."
          },
          {
            "code": "F1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "F2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "F3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "F4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "F5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/chessify-magic-chess-tools/id1397066775",
            "note_fr": "Critère informationnel : version et date de mise à jour publiées sur la fiche store."
          },
          {
            "code": "G1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "G2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "G3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "G4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessify.me/",
            "note_fr": "Critère informationnel : plateformes listées publiquement (web, iOS, Android, plugins ChessBase/Fritz)."
          },
          {
            "code": "H2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/chessify-magic-chess-tools/id1397066775",
            "note_fr": "Critère informationnel : notes et avis publics sur la fiche store."
          },
          {
            "code": "H3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "H5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "I1",
            "status": "paid",
            "quota": null,
            "source_url": "https://chessify.me/pricing",
            "note_fr": "La préparation d’adversaire s’appuie sur les bases « 10M+ Pro Games Database » / « 2 Million+ ICCF Database », absentes de la colonne gratuite."
          },
          {
            "code": "I2",
            "status": "quota-symbolic",
            "quota": "1 PGN",
            "source_url": "https://chessify.me/pricing",
            "note_fr": "Stockage cloud des parties/analyses limité à « 1 PGN » en gratuit (500 en Amateur, illimité en Master/GM)."
          },
          {
            "code": "I3",
            "status": "undocumented",
            "quota": null,
            "source_url": "https://chessify.me/mobile",
            "note_fr": "Le scanner (« take a direct photo of the board to digitize your chess position ») est décrit sur /mobile et l’App Store sans aucune mention de gratuité, de coût en coins ni de quota — statut gratuit non établissable depuis les pages publiques."
          },
          {
            "code": "I4",
            "status": "quota-symbolic",
            "quota": "1 PGN",
            "source_url": "https://chessify.me/pricing",
            "note_fr": "La recherche dans ses parties se borne au stock gratuit de « 1 PGN » ; aucun filtre/recherche de position documenté."
          },
          {
            "code": "J1",
            "status": "paid",
            "quota": null,
            "source_url": "https://chessify.me/pricing",
            "note_fr": "« 1-1 bonus call with a GM » est un avantage du plan Master (payant)."
          },
          {
            "code": "J2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessify.me/",
            "note_fr": "Critère informationnel : revendication publique « 60 000+ PRO users », aucune activité communautaire visible."
          },
          {
            "code": "J3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "J4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "K1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/chessify-magic-chess-tools/id1397066775",
            "note_fr": "Critère informationnel (politique K) : « Import, Export, and Share PGN/FEN » présenté comme fonction de l’app ; le stock cloud gratuit reste 1 PGN (pricing)."
          },
          {
            "code": "K2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "K3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessify.me/",
            "note_fr": "Critère informationnel (politique K) : pas d’API publique ; PGN/plugins documentés sur les pages publiques."
          }
        ]
      }
    },
    {
      "slug": "really-bad-chess",
      "name": "Really Bad Chess",
      "url": "https://apps.apple.com/us/app/really-bad-chess/id1109751921",
      "kind": "platform",
      "type": {
        "en": "Chess game with random pieces",
        "fr": "Jeu d’échecs à pièces aléatoires"
      },
      "price": {
        "en": "≈ €3.7 one-off purchase (IAP $3.99; undos $0.99) — free with ads",
        "fr": "≈ 3,7 € achat unique (IAP 3,99 $ ; undos 0,99 $) — gratuit avec publicité"
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 1.6,
      "unweighted_score": 1.48,
      "category_scores": {
        "A": 0,
        "B": 0,
        "C": 0,
        "D": 7.5,
        "E": 2.5,
        "F": 1.3,
        "G": 1.7,
        "H": 3.3,
        "I": 0,
        "J": 0,
        "K": 0
      },
      "scores": {
        "A": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "C": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "D": [
          2,
          3,
          2,
          2
        ],
        "E": [
          0,
          0,
          1,
          2
        ],
        "F": [
          0,
          0,
          0,
          0,
          2
        ],
        "G": [
          0,
          1,
          0,
          1
        ],
        "H": [
          2,
          1,
          0,
          0,
          2
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          0,
          0,
          0,
          0
        ],
        "K": [
          0,
          0,
          0
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 1.6,
        "criteria": [
          {
            "code": "A1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "A2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "A3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "A4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "A5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "A7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "A8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "B1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "B2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "B3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "B4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "B5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "B6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "C1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "C2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "C3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "C4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "C5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "C6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "C7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "C8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "C9",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/really-bad-chess/id1109751921",
            "note_fr": "Critère informationnel : « The free version of Really Bad Chess lets you compete vs. an AI in Ranked, Daily, or Weekly Challenges. Improve your skills using the included Freeplay mode. »"
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/really-bad-chess/id1109751921",
            "note_fr": "Critère informationnel : « Full Game Unlock » 3,99 $ affiché publiquement."
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/really-bad-chess/id1109751921",
            "note_fr": "Critère informationnel : prix affiché, version gratuite, achat unique."
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/really-bad-chess/id1109751921",
            "note_fr": "Critère informationnel : deux achats (« Full Game Unlock » 3,99 $, « 100 Undos » 0,99 $) lisibles sur la fiche."
          },
          {
            "code": "E1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "E2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "E3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/really-bad-chess/id1109751921",
            "note_fr": "Critère informationnel : principe du jeu décrit publiquement."
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/really-bad-chess/id1109751921",
            "note_fr": "Critère informationnel : aucune promesse — vérifiable sur la fiche publique."
          },
          {
            "code": "F1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "F2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "F3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "F4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "F5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/really-bad-chess/id1109751921",
            "note_fr": "Critère informationnel : version et date publiées sur la fiche store."
          },
          {
            "code": "G1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "G2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/really-bad-chess/id1109751921",
            "note_fr": "« The free version of Really Bad Chess lets you compete vs. an AI in Ranked, Daily, or Weekly Challenges. Improve your skills using the included Freeplay mode. » — l’IA (Ranked + Freeplay) est dans la version gratuite avec pubs ; l’achat 3,99 $ débloque le Versus local, retire les pubs. Les undos supplémentaires sont un consommable 0,99 $."
          },
          {
            "code": "G3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "G4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/really-bad-chess/id1109751921",
            "note_fr": "Les Daily et Weekly Challenges sont explicitement dans la version gratuite : « The free version of Really Bad Chess lets you compete vs. an AI in Ranked, Daily, or Weekly Challenges. »"
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://play.google.com/store/apps/details?id=com.noodlecake.reallybadchess",
            "note_fr": "Critère informationnel : iOS + Android, pas de web."
          },
          {
            "code": "H2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/really-bad-chess/id1109751921",
            "note_fr": "Critère informationnel : notes publiques (3,76/5 iOS ; 4,1/5 Android)."
          },
          {
            "code": "H3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://play.google.com/store/apps/details?id=com.noodlecake.reallybadchess",
            "note_fr": "Jeu solo contre l’IA jouable hors-ligne dans la version gratuite (fiche Play : jeu solo, « Contains ads »)."
          },
          {
            "code": "I1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "I2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "I3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "I4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "J2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "J3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "J4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "K1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "K2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "K3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          }
        ]
      }
    },
    {
      "slug": "blindfold-chess-trainer-dawid-wrzesinski",
      "name": "Blindfold Chess Trainer (Dawid Wrzesinski)",
      "url": "https://play.google.com/store/apps/details?id=com.dawikk.ChessMaster",
      "kind": "platform",
      "type": {
        "en": "mobile blindfold playing app",
        "fr": "application mobile de jeu à l’aveugle"
      },
      "price": {
        "en": "Free with ads; one-off purchases €1.39–41.99 (Google Play). No annual subscription.",
        "fr": "Gratuit avec publicités ; achats à l’unité 1,39–41,99 € (Google Play). Pas d’abonnement annuel."
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 1.58,
      "unweighted_score": 1.37,
      "category_scores": {
        "A": 0,
        "B": 0,
        "C": 1.9,
        "D": 5.8,
        "E": 2.5,
        "F": 1.3,
        "G": 0.8,
        "H": 2,
        "I": 0,
        "J": 0.8,
        "K": 0
      },
      "scores": {
        "A": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "C": [
          0,
          1,
          0,
          0,
          0,
          2,
          0,
          0,
          2
        ],
        "D": [
          2,
          2,
          1,
          2
        ],
        "E": [
          1,
          0,
          1,
          1
        ],
        "F": [
          0,
          0,
          0,
          0,
          2
        ],
        "G": [
          0,
          1,
          0,
          0
        ],
        "H": [
          1,
          0,
          0,
          0,
          2
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          0,
          0,
          0,
          1
        ],
        "K": [
          0,
          0,
          0
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 1.58,
        "criteria": [
          {
            "code": "A1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "A2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "A3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "A4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "A5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "A7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "A8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "B1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "B2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "B3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "B4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "B5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "B6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "C1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "C2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://play.google.com/store/apps/details?id=com.dawikk.ChessMaster",
            "note_fr": "« 5,000+ CHESS PUZZLES … 100% offline » présentés comme contenu de l’app gratuite avec pubs (« Contains ads ») ; des achats 1,39-41,99 € existent mais la fiche ne publie aucune limite du gratuit (un avis mentionne un « premium » non détaillé)."
          },
          {
            "code": "C3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "C4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "C5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "C6",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://play.google.com/store/apps/details?id=com.dawikk.ChessMaster",
            "note_fr": "« LEARN CHESS VISUALIZATION — Master all 64 squares and their colors… » + mode à l’aveugle : décrits comme fonctions de l’app gratuite avec pubs ; certains contenus se débloquent en regardant une publicité (avis), ce qui reste gratuit."
          },
          {
            "code": "C7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "C8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "C9",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://play.google.com/store/apps/details?id=com.dawikk.ChessMaster",
            "note_fr": "« Daily challenges to keep you motivated » — présenté dans l’app gratuite avec pubs, aucun quota publié."
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://play.google.com/store/apps/details?id=com.dawikk.ChessMaster",
            "note_fr": "Critère informationnel : gratuit avec publicités, achats intégrés affichés."
          },
          {
            "code": "D2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://play.google.com/store/apps/details?id=com.dawikk.ChessMaster",
            "note_fr": "Critère informationnel : fourchette d’achats « €1.39 - €41.99 » publiée sur la fiche Play."
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://play.google.com/store/apps/details?id=com.dawikk.ChessMaster",
            "note_fr": "Critère informationnel : prix des achats affichés ; ni essai ni remboursement propre."
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://play.google.com/store/apps/details?id=com.dawikk.ChessMaster",
            "note_fr": "Critère informationnel : achats intégrés 1,39-41,99 €, paliers non détaillés."
          },
          {
            "code": "E1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://play.google.com/store/apps/details?id=com.dawikk.ChessMaster",
            "note_fr": "Critère informationnel : « Studies show that blindfold chess improves: calculation skills, memory, pattern recognition, and overall chess rating » — sans source, lisible publiquement."
          },
          {
            "code": "E2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "E3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://play.google.com/store/apps/details?id=com.dawikk.ChessMaster",
            "note_fr": "Critère informationnel : « Stockfish » nommé, rien d’autre."
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://play.google.com/store/apps/details?id=com.dawikk.ChessMaster",
            "note_fr": "Critère informationnel : promesses (« transform your chess skills ») lisibles publiquement."
          },
          {
            "code": "F1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "F2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "F3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "F4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "F5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://play.google.com/store/apps/details?id=com.dawikk.ChessMaster",
            "note_fr": "Critère informationnel : « Updated on Aug 29, 2026 » sur la fiche Play."
          },
          {
            "code": "G1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "G2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://play.google.com/store/apps/details?id=com.dawikk.ChessMaster",
            "note_fr": "« Challenge Stockfish AI at 8 difficulty levels » — fonction de l’app gratuite avec pubs, aucune limite publiée."
          },
          {
            "code": "G3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "G4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/us/app/blindfold-chess-trainer/id6745624258",
            "note_fr": "Critère informationnel : iOS + Android, pas de web."
          },
          {
            "code": "H2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "H3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://play.google.com/store/apps/details?id=com.dawikk.ChessMaster",
            "note_fr": "« 100% offline - practice anywhere, no internet needed » — dans la version gratuite."
          },
          {
            "code": "I1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "I2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "I3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "I4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "J2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "J3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "J4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://play.google.com/store/apps/details?id=com.dawikk.ChessMaster",
            "note_fr": "Mécaniques d’engagement (XP, niveaux, défis quotidiens, pubs récompensées) présentes dans l’app gratuite (« Contains ads », « Track your progress with XP and levels »)."
          },
          {
            "code": "K1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "K2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "K3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          }
        ]
      }
    },
    {
      "slug": "iqchess",
      "name": "IQChess",
      "url": "https://iqchess.org/",
      "kind": "platform",
      "type": {
        "en": "GPT coach with gems",
        "fr": "coach GPT avec gemmes"
      },
      "price": {
        "en": "$149.99/yr \"Grandmaster Yearly Subscription\" ≈ €138 (https://apps.apple.com/us/app/iqchess-ai-gpt-chess-coach/id6749187673); rule: annual price shown; \"Coach Monthly\" $10.99; gems $0.99-49.99",
        "fr": "149,99 $/an « Grandmaster Yearly Subscription » ≈ 138 € (https://apps.apple.com/us/app/iqchess-ai-gpt-chess-coach/id6749187673) ; règle : annuel affiché ; « Coach Monthly » 10,99 $ ; gemmes 0,99-49,99 $"
      },
      "languages": 23,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 1.51,
      "unweighted_score": 1.22,
      "category_scores": {
        "A": 2.1,
        "B": 0,
        "C": 1.5,
        "D": 3.3,
        "E": 1.7,
        "F": 1.3,
        "G": 0,
        "H": 2.7,
        "I": 0,
        "J": 0.8,
        "K": 0
      },
      "scores": {
        "A": [
          0,
          1,
          0,
          0,
          2,
          0,
          1,
          1
        ],
        "B": [
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "C": [
          0,
          1,
          0,
          2,
          0,
          0,
          1,
          0,
          0
        ],
        "D": [
          1,
          1,
          1,
          1
        ],
        "E": [
          0,
          0,
          1,
          1
        ],
        "F": [
          0,
          0,
          0,
          0,
          2
        ],
        "G": [
          0,
          0,
          0,
          0
        ],
        "H": [
          1,
          0,
          2,
          0,
          1
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          0,
          1,
          0,
          0
        ],
        "K": [
          0,
          0,
          0
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": null
    },
    {
      "slug": "saint-louis-chess-club-offre-en-ligne",
      "name": "Saint Louis Chess Club (offre en ligne)",
      "url": "https://saintlouischessclub.org/",
      "kind": "institution",
      "type": {
        "en": "physical club with online lessons and videos",
        "fr": "club physique avec cours et vidéos en ligne"
      },
      "price": {
        "en": "Non-local membership $50/yr ≈ €46 (annual price shown, $1 ≈ €0.92); \"Grandmaster Subscription\" (daily Zoom): price not shown; private lessons: price per instructor, not shown",
        "fr": "Adhésion non locale 50 $/an ≈ 46 € (annuel affiché, 1 $ ≈ 0,92 €) ; « Grandmaster Subscription » (Zoom quotidien) : prix non affiché ; cours particuliers : prix par instructeur, non affiché"
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": false,
      "overall_score": null,
      "unweighted_score": null,
      "category_scores": {
        "A": 0,
        "B": 0,
        "C": 0.7,
        "D": 4.2,
        "E": 2.5,
        "F": 5.3,
        "G": 0,
        "H": 1.3,
        "I": 0,
        "J": 5.8,
        "K": 0
      },
      "scores": {
        "A": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "C": [
          0,
          0,
          0,
          1,
          0,
          0,
          0,
          0,
          1
        ],
        "D": [
          2,
          2,
          1,
          0
        ],
        "E": [
          0,
          0,
          1,
          2
        ],
        "F": [
          2,
          3,
          1,
          1,
          1
        ],
        "G": [
          0,
          0,
          0,
          0
        ],
        "H": [
          1,
          0,
          0,
          0,
          1
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          3,
          2,
          0,
          2
        ],
        "K": [
          0,
          0,
          0
        ]
      },
      "evidence_urls": {
        "A": [
          "https://saintlouischessclub.org/education/digital-classroom/",
          "https://saintlouischessclub.org/",
          "https://saintlouischessclub.org/education/",
          "https://saintlouischessclub.org/education/",
          "https://saintlouischessclub.org/education/educational-resources/digital-classroom-chess-training-programs/",
          "https://saintlouischessclub.org/",
          "https://saintlouischessclub.org/",
          "https://saintlouischessclub.org/"
        ],
        "B": [
          "https://saintlouischessclub.org/",
          "https://saintlouischessclub.org/",
          "https://saintlouischessclub.org/",
          "https://saintlouischessclub.org/",
          "https://saintlouischessclub.org/",
          "https://saintlouischessclub.org/education/digital-classroom/"
        ],
        "C": [
          "https://saintlouischessclub.org/",
          "https://saintlouischessclub.org/",
          "https://saintlouischessclub.org/education/digital-classroom/",
          "https://saintlouischessclub.org/education/educational-resources/digital-classroom-chess-training-programs/",
          "https://saintlouischessclub.org/education/",
          "https://saintlouischessclub.org/",
          "https://saintlouischessclub.org/education/digital-classroom/",
          "https://saintlouischessclub.org/education/",
          "https://saintlouischessclub.org/education/private-lessons/"
        ],
        "D": [
          "https://saintlouischessclub.org/education/digital-classroom/",
          "https://saintlouischessclub.org/get-involved/become-a-member/",
          "https://saintlouischessclub.org/education/private-lessons/",
          "https://saintlouischessclub.org/education/"
        ],
        "E": [
          "https://saintlouischessclub.org/",
          "https://saintlouischessclub.org/",
          "https://saintlouischessclub.org/education/digital-classroom/",
          "https://saintlouischessclub.org/"
        ],
        "F": [
          "https://saintlouischessclub.org/education/digital-classroom/",
          "https://saintlouischessclub.org/education/private-lessons/",
          "https://saintlouischessclub.org/education/digital-classroom/",
          "https://saintlouischessclub.org/education/digital-classroom/",
          "https://saintlouischessclub.org/"
        ],
        "G": [
          "https://saintlouischessclub.org/",
          "https://saintlouischessclub.org/",
          "https://saintlouischessclub.org/",
          "https://saintlouischessclub.org/"
        ],
        "H": [
          "https://saintlouischessclub.org/",
          "https://saintlouischessclub.org/",
          "https://saintlouischessclub.org/",
          "https://saintlouischessclub.org/",
          "https://saintlouischessclub.org/"
        ],
        "I": [
          "https://saintlouischessclub.org/education/",
          "https://saintlouischessclub.org/education/private-lessons/",
          "https://saintlouischessclub.org/education/educational-resources/digital-classroom-chess-training-programs/",
          "https://saintlouischessclub.org/education/"
        ],
        "J": [
          "https://saintlouischessclub.org/education/private-lessons/",
          "https://saintlouischessclub.org/get-involved/become-a-member/",
          "https://saintlouischessclub.org/",
          "https://saintlouischessclub.org/"
        ],
        "K": [
          "https://saintlouischessclub.org/",
          "https://saintlouischessclub.org/",
          "https://saintlouischessclub.org/"
        ]
      },
      "sources": [
        "https://saintlouischessclub.org/about-us/our-history/",
        "https://en.wikipedia.org/wiki/Saint_Louis_Chess_Club",
        "https://saintlouischessclub.org/education/digital-classroom/",
        "https://saintlouischessclub.org/education/private-lessons/",
        "https://saintlouischessclub.org/get-involved/become-a-member/",
        "https://saintlouischessclub.org/news-insights-press/saint-louis-chess-club-announces-highly-anticipated-2026-invitational-tournament-schedule/",
        "https://saintlouischessclub.org/news-insights-press/2025-saint-louis-chess-club-grand-reopening/",
        "https://saintlouischessclub.org/news-insights-press/expansion/",
        "https://saintlouischessclub.org/",
        "https://saintlouischessclub.org/education/",
        "https://saintlouischessclub.org/education/educational-resources/digital-classroom-chess-training-programs/"
      ],
      "review_url": "https://www.chesspivot.com/en/reviews/saint-louis-chess-club-offre-en-ligne",
      "free_access": null
    },
    {
      "slug": "chess4life",
      "name": "Chess4Life",
      "url": "https://chess4life.com/",
      "kind": "platform",
      "type": {
        "en": "kids' academy, weekly lessons in cohorts",
        "fr": "académie enfants, cours hebdo en cohortes"
      },
      "price": {
        "en": "Premium Classes $159/mo → 12 × monthly = $1,908/yr ≈ €1,755/yr ($1 ≈ €0.92); camps from $425, tournaments $29 (chess4life.com)",
        "fr": "Premium Classes 159 $/mois → 12 × mensuel = 1 908 $/an ≈ 1 755 €/an (1 $ ≈ 0,92 €) ; camps dès 425 $, tournois 29 $ (chess4life.com)"
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 1.46,
      "unweighted_score": 1.89,
      "category_scores": {
        "A": 0,
        "B": 0,
        "C": 1.5,
        "D": 2.5,
        "E": 2.5,
        "F": 5.3,
        "G": 0.8,
        "H": 1.3,
        "I": 0,
        "J": 5.8,
        "K": 1.1
      },
      "scores": {
        "A": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "C": [
          0,
          0,
          1,
          1,
          0,
          0,
          1,
          0,
          1
        ],
        "D": [
          0,
          0,
          2,
          1
        ],
        "E": [
          1,
          0,
          1,
          1
        ],
        "F": [
          2,
          1,
          2,
          2,
          1
        ],
        "G": [
          0,
          0,
          0,
          1
        ],
        "H": [
          1,
          0,
          0,
          0,
          1
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          2,
          2,
          1,
          2
        ],
        "K": [
          0,
          1,
          0
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": null
    },
    {
      "slug": "chess-universe",
      "name": "Chess Universe",
      "url": "https://chess-universe.io/",
      "kind": "platform",
      "type": {
        "en": "gamified play-and-earn mobile game",
        "fr": "jeu mobile gamifié play-and-earn"
      },
      "price": {
        "en": "€311/yr (weekly VIP €5.99 × 52, the only readable subscription on the French App Store); in-app purchases €2.99-11.99; \"Guardians\" $39.99",
        "fr": "311 €/an (VIP hebdomadaire 5,99 € × 52, seul abonnement lisible sur l’App Store FR) ; achats intégrés 2,99-11,99 € ; « Guardians » 39,99 $"
      },
      "languages": 7,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 1.46,
      "unweighted_score": 1.77,
      "category_scores": {
        "A": 0.8,
        "B": 0,
        "C": 0.7,
        "D": 2.5,
        "E": 0.8,
        "F": 3.3,
        "G": 4.2,
        "H": 5.3,
        "I": 0,
        "J": 0.8,
        "K": 1.1
      },
      "scores": {
        "A": [
          0,
          0,
          0,
          0,
          0,
          0,
          1,
          1
        ],
        "B": [
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "C": [
          0,
          1,
          0,
          1,
          0,
          0,
          0,
          0,
          0
        ],
        "D": [
          2,
          0,
          1,
          0
        ],
        "E": [
          0,
          0,
          0,
          1
        ],
        "F": [
          2,
          0,
          1,
          0,
          2
        ],
        "G": [
          2,
          1,
          1,
          1
        ],
        "H": [
          1,
          3,
          2,
          0,
          2
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          0,
          1,
          0,
          0
        ],
        "K": [
          0,
          1,
          0
        ]
      },
      "evidence_urls": {
        "A": [
          "https://apps.apple.com/fr/app/chess-universe-play-online/id1487204900",
          "https://apps.apple.com/fr/app/chess-universe-play-online/id1487204900",
          "https://chess-universe.io/",
          "https://chess-universe.io/",
          "https://chess-universe.io/",
          "https://chess-universe.io/",
          "https://apps.apple.com/fr/app/id1487204900",
          "https://apps.apple.com/fr/app/id1487204900"
        ],
        "B": [
          "https://chess-universe.io/",
          "https://chess-universe.io/",
          "https://chess-universe.io/",
          "https://chess-universe.io/",
          "https://chess-universe.io/",
          "https://chess-universe.io/"
        ],
        "C": [
          "https://chess-universe.io/",
          "https://apps.apple.com/fr/app/id1487204900",
          "https://chess-universe.io/",
          "https://apps.apple.com/fr/app/id1487204900",
          "https://chess-universe.io/",
          "https://chess-universe.io/",
          "https://chess-universe.io/",
          "https://chess-universe.io/",
          "https://chess-universe.io/"
        ],
        "D": [
          "https://apps.apple.com/fr/app/chess-universe-play-online/id1487204900",
          "https://apps.apple.com/fr/app/chess-universe-play-online/id1487204900",
          "https://apps.apple.com/fr/app/chess-universe-play-online/id1487204900",
          "https://chess-universe.io/"
        ],
        "E": [
          "https://chess-universe.io/",
          "https://chess-universe.io/",
          "https://chess-universe.io/",
          "https://chess-universe.io/"
        ],
        "F": [
          "https://apps.apple.com/fr/app/id1487204900",
          "https://chess-universe.io/",
          "https://chess-universe.io/",
          "https://chess-universe.io/",
          "https://apps.apple.com/fr/app/id1487204900"
        ],
        "G": [
          "https://play.google.com/store/apps/details?id=com.kingsofgames.chessuniverse",
          "https://apps.apple.com/fr/app/id1487204900",
          "https://apps.apple.com/fr/app/chess-universe-play-online/id1487204900",
          "https://chess-universe.io/"
        ],
        "H": [
          "https://apps.apple.com/fr/app/chess-universe-play-online/id1487204900",
          "https://play.google.com/store/apps/details?id=com.kingsofgames.chessuniverse",
          "https://chess-universe.io/",
          "https://play.google.com/store/apps/details?id=com.kingsofgames.chessuniverse"
        ],
        "I": [
          "https://chess-universe.io/",
          "https://chess-universe.io/",
          "https://apps.apple.com/fr/app/id1487204900",
          "https://apps.apple.com/fr/app/id1487204900"
        ],
        "J": [
          "https://chess-universe.io/",
          "https://chess-universe.io/",
          "https://chess-universe.io/",
          "https://apps.apple.com/fr/app/chess-universe-play-online/id1487204900"
        ],
        "K": [
          "https://chess-universe.io/privacy/",
          "https://chess-universe.io/privacy/",
          "https://chess-universe.io/"
        ]
      },
      "sources": [
        "https://chess-universe.io/",
        "https://kingsofgames.net/",
        "https://chess-universe.io/privacy/",
        "https://www.pocketgamer.biz/king-of-games-secures-funding-for-chess-universe/",
        "https://whitepaper.chess-universe.io/",
        "https://apps.apple.com/fr/app/chess-universe-play-online/id1487204900",
        "https://play.google.com/store/apps/details?id=com.kingsofgames.chessuniverse"
      ],
      "review_url": "https://www.chesspivot.com/en/reviews/chess-universe",
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 1.13,
        "criteria": [
          {
            "code": "A1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "A2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "A3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "A4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "A5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "A7",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://itunes.apple.com/lookup?id=1487204900&country=fr",
            "note_fr": "« Affrontez des joueurs du monde entier et grimpez au classement de votre pays » — le classement accompagne le jeu en ligne gratuit (avec pubs)."
          },
          {
            "code": "A8",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://itunes.apple.com/lookup?id=1487204900&country=fr",
            "note_fr": "Position dans le classement global/national accessible avec le jeu gratuit en ligne."
          },
          {
            "code": "B1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "B2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "B3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "B4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "B5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "B6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "C1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "C2",
            "status": "paid",
            "quota": null,
            "source_url": "https://play.google.com/store/apps/details?id=com.kingsofgames.chessuniverse",
            "note_fr": "La fiche Play (FR) écrit que le VIP « débloque … plus de 1 000 leçons » : « un abonnement VIP, qui débloque tous les échiquiers, ensembles de pièces, effets spéciaux, plus de 1 000 leçons, emojis, et des indications et annulations illimitées » — les leçons relèvent donc de l’abonnement ; la fiche App Store les liste sans préciser de palier gratuit."
          },
          {
            "code": "C3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "C4",
            "status": "paid",
            "quota": null,
            "source_url": "https://play.google.com/store/apps/details?id=com.kingsofgames.chessuniverse",
            "note_fr": "Mêmes « plus de 1 000 leçons » débloquées par le VIP (fiche Play FR, citation au critère C2)."
          },
          {
            "code": "C5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "C6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "C7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "C8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "C9",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/fr/app/chess-universe-play-online/id1487204900",
            "note_fr": "Critère informationnel : app gratuite avec publicités et achats intégrés, documentée publiquement."
          },
          {
            "code": "D2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "D3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/fr/app/chess-universe-play-online/id1487204900",
            "note_fr": "Critère informationnel : prix des achats/abonnements affichés sur la fiche."
          },
          {
            "code": "D4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "E1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "E2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "E3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chess-universe.io/",
            "note_fr": "Critère informationnel : revendications (« First Mobile Chess Game », « Over 10 Million Players ») lisibles publiquement."
          },
          {
            "code": "F1",
            "status": "paid",
            "quota": null,
            "source_url": "https://play.google.com/store/apps/details?id=com.kingsofgames.chessuniverse",
            "note_fr": "« 1 000 leçons couvrant du débutant à l’avancé » — débloquées par l’abonnement VIP selon la fiche Play FR (citation au critère C2)."
          },
          {
            "code": "F2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "F3",
            "status": "paid",
            "quota": null,
            "source_url": "https://play.google.com/store/apps/details?id=com.kingsofgames.chessuniverse",
            "note_fr": "Le format unique (leçons in-app) relève des « plus de 1 000 leçons » débloquées par le VIP (fiche Play FR)."
          },
          {
            "code": "F4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "F5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://itunes.apple.com/lookup?id=1487204900&country=fr",
            "note_fr": "Critère informationnel : version et date publiées (v1.27.5, 24 juin 2026)."
          },
          {
            "code": "G1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://itunes.apple.com/lookup?id=1487204900&country=fr",
            "note_fr": "« JOUEZ À DES PARTIES D’ÉCHECS EN LIGNE EN ILLIMITÉ — Affrontez des joueurs du monde entier » ; app gratuite avec pubs (le VIP retire les publicités)."
          },
          {
            "code": "G2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://itunes.apple.com/lookup?id=1487204900&country=fr",
            "note_fr": "Îles « Jouer contre l’ordinateur » jouables en gratuit (« De nouveaux adversaires apparaissent toutes les 24 heures », difficulté adaptative) ; le VIP « débloque toutes les îles » — le socle contre l’ordinateur reste gratuit."
          },
          {
            "code": "G3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://itunes.apple.com/lookup?id=1487204900&country=fr",
            "note_fr": "« CRÉEZ VOTRE PARTIE — Utilisez le mode Créer votre partie dans Jouer contre l’ordinateur pour créer des parties personnalisées et vous entraîner à vos positions préférées dans 9 niveaux de difficulté » — hors bloc VIP ; seuls indices/annulations illimités sont VIP."
          },
          {
            "code": "G4",
            "status": "paid",
            "quota": null,
            "source_url": "https://chess-universe.io/",
            "note_fr": "« Guardian owner exclusive events and competitions for real prizes! » — tournois réservés aux acheteurs de Guardians (39,99 $)."
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/fr/app/chess-universe-play-online/id1487204900",
            "note_fr": "Critère informationnel : iOS/Android/Mac listés publiquement."
          },
          {
            "code": "H2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://play.google.com/store/apps/details?id=com.kingsofgames.chessuniverse",
            "note_fr": "Critère informationnel : 4,7/5 (113 k avis) Play ; 4,69/5 App Store."
          },
          {
            "code": "H3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://apps.apple.com/fr/app/chess-universe-play-online/id1487204900",
            "note_fr": "Critère informationnel : 7 langues listées sur la fiche App Store FR."
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://play.google.com/store/apps/details?id=com.kingsofgames.chessuniverse",
            "note_fr": "Jeux « en ligne/hors ligne » listés sur la fiche Play — le jeu hors-ligne fait partie de l’app gratuite."
          },
          {
            "code": "I1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "I2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "I3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "I4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "J2",
            "status": "paid",
            "quota": null,
            "source_url": "https://chess-universe.io/",
            "note_fr": "« Become involved with the project via special discord channels! » — canaux réservés aux propriétaires de Guardians ; la revendication « 10 Million Players » reste sans activité visible."
          },
          {
            "code": "J3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "J4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "K1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "K2",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chess-universe.io/privacy/",
            "note_fr": "Critère informationnel : politique publique (Kings of Games, Slovénie ; partage IDFA/advertising ID)."
          },
          {
            "code": "K3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          }
        ]
      }
    },
    {
      "slug": "chessmaster-ai",
      "name": "Chessmaster AI",
      "url": "https://play.google.com/store/apps/details?id=chess.shuvo.app",
      "kind": "platform",
      "type": {
        "en": "Mobile game against AI with commentary",
        "fr": "Jeu mobile contre IA avec commentaire"
      },
      "price": {
        "en": "$0.49 ≈ €0.45 (one-off app purchase on Google Play, \"$0.49 Buy\" button); in-app purchases not detailed. Rule: price shown, one-off payment.",
        "fr": "0,49 $ ≈ 0,45 € (achat unique de l’app Google Play, bouton « $0.49 Buy ») ; achats intégrés non détaillés. Règle : prix affiché, paiement unique."
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 1.43,
      "unweighted_score": 1.33,
      "category_scores": {
        "A": 1.3,
        "B": 0,
        "C": 0.4,
        "D": 5,
        "E": 1.7,
        "F": 1.3,
        "G": 0.8,
        "H": 1.3,
        "I": 0,
        "J": 1.7,
        "K": 1.1
      },
      "scores": {
        "A": [
          0,
          1,
          0,
          0,
          2,
          0,
          0,
          0
        ],
        "B": [
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "C": [
          0,
          0,
          0,
          0,
          0,
          0,
          1,
          0,
          0
        ],
        "D": [
          0,
          3,
          1,
          2
        ],
        "E": [
          0,
          0,
          1,
          1
        ],
        "F": [
          0,
          0,
          0,
          0,
          2
        ],
        "G": [
          0,
          1,
          0,
          0
        ],
        "H": [
          1,
          0,
          0,
          0,
          1
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          0,
          0,
          0,
          2
        ],
        "K": [
          0,
          1,
          0
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": null
    },
    {
      "slug": "lichess-coaches-annuaire",
      "name": "Lichess Coaches (annuaire)",
      "url": "https://lichess.org/coach",
      "kind": "coaches",
      "type": {
        "en": "directory of titled coaches",
        "fr": "annuaire de coachs titrés"
      },
      "price": {
        "en": "Directory free; $20 to $100/hour depending on the coach (≈ €18-92). No annual package.",
        "fr": "Annuaire gratuit ; 20 à 100 $/heure selon le coach (≈ 18-92 €). Pas de forfait annuel."
      },
      "languages": 2,
      "read_at": "2026-08-30",
      "scored_overall": false,
      "overall_score": null,
      "unweighted_score": null,
      "category_scores": {
        "A": 0,
        "B": 0,
        "C": 0,
        "D": 6.7,
        "E": 4.2,
        "F": 0,
        "G": 0,
        "H": 2,
        "I": 0,
        "J": 4.2,
        "K": 6.7
      },
      "scores": {
        "A": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "C": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "D": [
          3,
          3,
          1,
          1
        ],
        "E": [
          0,
          0,
          3,
          2
        ],
        "F": [
          0,
          0,
          0,
          0,
          0
        ],
        "G": [
          0,
          0,
          0,
          0
        ],
        "H": [
          1,
          0,
          1,
          0,
          1
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          3,
          0,
          0,
          2
        ],
        "K": [
          0,
          3,
          3
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": null
    },
    {
      "slug": "club-d-echecs-en-ligne-marc-quenehen-fr",
      "name": "Club d'échecs en ligne Marc Quenehen (FR)",
      "url": "https://marcquenehen.com/",
      "kind": "platform",
      "type": {
        "en": "French-language live lesson club",
        "fr": "club de cours en direct francophone"
      },
      "price": {
        "en": "€179/yr (annual price shown; €39/mo, €87/3 months); season replays €87-139",
        "fr": "179 €/an (annuel affiché ; 39 €/mois, 87 €/3 mois) ; replays de saison 87-139 €"
      },
      "languages": 2,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 1.2,
      "unweighted_score": 1.64,
      "category_scores": {
        "A": 0,
        "B": 0.6,
        "C": 0.7,
        "D": 0.8,
        "E": 2.5,
        "F": 5.3,
        "G": 0.8,
        "H": 2,
        "I": 0,
        "J": 4.2,
        "K": 1.1
      },
      "scores": {
        "A": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          0,
          0,
          0,
          0,
          0,
          1
        ],
        "C": [
          0,
          0,
          0,
          1,
          0,
          0,
          0,
          0,
          1
        ],
        "D": [
          0,
          0,
          1,
          0
        ],
        "E": [
          0,
          0,
          1,
          2
        ],
        "F": [
          2,
          1,
          1,
          1,
          3
        ],
        "G": [
          0,
          0,
          0,
          1
        ],
        "H": [
          1,
          0,
          1,
          0,
          1
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          2,
          1,
          0,
          2
        ],
        "K": [
          0,
          1,
          0
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": null
    },
    {
      "slug": "chess-vision-trainer",
      "name": "Chess Vision Trainer",
      "url": "https://chessvisiontrainer.com/",
      "kind": "platform",
      "type": {
        "en": "Blindfold visualisation app",
        "fr": "Application de visualisation à l’aveugle"
      },
      "price": {
        "en": "Not available: the Pro subscription is \"managed via App Store / Google Play\" with no amount on /pricing, and the store listings cannot be found (dummy iOS link, Play 404).",
        "fr": "Non disponible : l’abonnement Pro est « géré via App Store / Google Play » sans montant sur /pricing, et les fiches store sont introuvables (lien iOS factice, Play en 404)."
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 1.16,
      "unweighted_score": 1.08,
      "category_scores": {
        "A": 0,
        "B": 0,
        "C": 1.5,
        "D": 4.2,
        "E": 2.5,
        "F": 0,
        "G": 0,
        "H": 2,
        "I": 0,
        "J": 1.7,
        "K": 0
      },
      "scores": {
        "A": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "C": [
          0,
          0,
          1,
          0,
          0,
          3,
          0,
          0,
          0
        ],
        "D": [
          2,
          0,
          0,
          3
        ],
        "E": [
          0,
          0,
          1,
          2
        ],
        "F": [
          0,
          0,
          0,
          0,
          0
        ],
        "G": [
          0,
          0,
          0,
          0
        ],
        "H": [
          1,
          0,
          0,
          0,
          2
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          0,
          0,
          0,
          2
        ],
        "K": [
          0,
          0,
          0
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": {
        "read_at": "2026-09-02",
        "overall_score": 1,
        "criteria": [
          {
            "code": "A1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "A2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "A3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "A4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "A5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "A6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "A7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "A8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "B1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "B2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "B3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "B4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "B5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "B6",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "C1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "C2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "C3",
            "status": "paid",
            "quota": null,
            "source_url": "https://chessvisiontrainer.com/pricing",
            "note_fr": "Les exercices de finales sont tous étiquetés Pro : « K+Q Checkmate: Pro ; K+R Checkmate: Pro ; K+B+B Checkmate: Pro ; K+P Endgame: Pro »."
          },
          {
            "code": "C4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "C5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "C6",
            "status": "quota-real",
            "quota": "« Square Color: Free ; Bishop Intermediate: Free ; Knight Path: Free » — FAQ : « Square Color, Bishop Intermediate, and Knight Path exercises — plenty to build a strong foundation »",
            "source_url": "https://chessvisiontrainer.com/pricing",
            "note_fr": "3 exercices de visualisation sur 8 sont gratuits, sans limite quotidienne publiée (usage quotidien réel possible) ; les 5 paliers avancés dont « Blindfold Game » sont Pro."
          },
          {
            "code": "C7",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "C8",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "C9",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "D1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessvisiontrainer.com/pricing",
            "note_fr": "Critère informationnel : la page tarifs publique documente le périmètre gratuit (3 exercices Free, reste Pro)."
          },
          {
            "code": "D2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "D3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "D4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessvisiontrainer.com/pricing",
            "note_fr": "Critère informationnel : un seul palier payant « Pro », lisible publiquement."
          },
          {
            "code": "E1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "E2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "E3",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessvisiontrainer.com/",
            "note_fr": "Critère informationnel : « AI-powered speech recognition », description générale publique."
          },
          {
            "code": "E4",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessvisiontrainer.com/",
            "note_fr": "Critère informationnel : discours factuel, aucune promesse chiffrée, vérifiable publiquement."
          },
          {
            "code": "F1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "F2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "F3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "F4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "F5",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "G1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "G2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "G3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "G4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "H1",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessvisiontrainer.com/",
            "note_fr": "Critère informationnel : mobile seul annoncé (lien App Store factice, fiche Play en 404)."
          },
          {
            "code": "H2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "H3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "H4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "H5",
            "status": "unlimited",
            "quota": null,
            "source_url": "https://chessvisiontrainer.com/",
            "note_fr": "« Most features work offline. Voice input requires an internet connection » — vaut pour le gratuit."
          },
          {
            "code": "I1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "I2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "I3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "I4",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "J1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "J2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "J3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "J4",
            "status": "undocumented",
            "quota": null,
            "source_url": null,
            "note_fr": "« Track Progress » / « detailed statistics » sont décrits sans étiquette Free/Pro sur le site et la FAQ — le palier de cette mécanique n’est pas établissable depuis les pages publiques."
          },
          {
            "code": "K1",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "K2",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          },
          {
            "code": "K3",
            "status": "na",
            "quota": null,
            "source_url": null,
            "note_fr": "Note 0 — fonction absente, pas d’enquête."
          }
        ]
      }
    },
    {
      "slug": "play-magnus-app",
      "name": "Play Magnus (app)",
      "url": "https://www.playmagnus.com/",
      "kind": "platform",
      "type": {
        "en": "app to play Magnus at every age",
        "fr": "app de jeu contre Magnus à chaque âge"
      },
      "price": {
        "en": "$34.99/yr ≈ €32 (annual subscription shown in the App Store in-app purchases; monthly $3.49; \"Brain Power\" consumables $0.99–2.99)",
        "fr": "34,99 $/an ≈ 32 € (abonnement annuel affiché dans les achats intégrés App Store ; mensuel 3,49 $ ; consommables « Brain Power » 0,99–2,99 $)"
      },
      "languages": 2,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 1.12,
      "unweighted_score": 1.29,
      "category_scores": {
        "A": 0,
        "B": 0,
        "C": 0,
        "D": 3.3,
        "E": 1.7,
        "F": 2.7,
        "G": 1.7,
        "H": 4,
        "I": 0.8,
        "J": 0,
        "K": 0
      },
      "scores": {
        "A": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "C": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "D": [
          1,
          2,
          1,
          0
        ],
        "E": [
          0,
          0,
          0,
          2
        ],
        "F": [
          1,
          1,
          2,
          0,
          0
        ],
        "G": [
          0,
          2,
          0,
          0
        ],
        "H": [
          2,
          2,
          1,
          0,
          1
        ],
        "I": [
          0,
          0,
          0,
          1
        ],
        "J": [
          0,
          0,
          0,
          0
        ],
        "K": [
          0,
          0,
          0
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": null
    },
    {
      "slug": "amazingtalker-echecs",
      "name": "AmazingTalker (échecs)",
      "url": "https://en.amazingtalker.com/tutors/chess",
      "kind": "coaches",
      "type": {
        "en": "Marketplace of private tutors",
        "fr": "Place de marché de tuteurs particuliers"
      },
      "price": {
        "en": "No subscription: €5–32 per 50-minute lesson (amazingtalker.fr); trial €1–19. Rule: 52 × ~€20 ≈ €1,040/yr for one weekly lesson (calculated, not shown).",
        "fr": "Pas d’abonnement : 5–32 € par cours de 50 min (amazingtalker.fr) ; essai 1–19 €. Règle : 52 × ~20 € ≈ 1 040 €/an pour un cours hebdomadaire (calcul, non affiché)."
      },
      "languages": 2,
      "read_at": "2026-08-30",
      "scored_overall": false,
      "overall_score": null,
      "unweighted_score": null,
      "category_scores": {
        "A": 0,
        "B": 0,
        "C": 0.4,
        "D": 5.8,
        "E": 2.5,
        "F": 1.3,
        "G": 0,
        "H": 2.7,
        "I": 0,
        "J": 4.2,
        "K": 2.2
      },
      "scores": {
        "A": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "C": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          1
        ],
        "D": [
          0,
          3,
          1,
          3
        ],
        "E": [
          1,
          0,
          1,
          1
        ],
        "F": [
          0,
          1,
          1,
          0,
          0
        ],
        "G": [
          0,
          0,
          0,
          0
        ],
        "H": [
          1,
          1,
          1,
          0,
          1
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          2,
          1,
          0,
          2
        ],
        "K": [
          1,
          1,
          0
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": null
    },
    {
      "slug": "wyzant-echecs",
      "name": "Wyzant (échecs)",
      "url": "https://www.wyzant.com/tutors/chess",
      "kind": "coaches",
      "type": {
        "en": "American tutor marketplace",
        "fr": "marketplace américaine de tuteurs"
      },
      "price": {
        "en": "$35 to $60/hour depending on the tutor (stated average). No annual package; service fees not published.",
        "fr": "35 à 60 $/heure selon le tuteur (moyenne annoncée). Pas de forfait annuel ; frais de service non publiés."
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": false,
      "overall_score": null,
      "unweighted_score": null,
      "category_scores": {
        "A": 0.4,
        "B": 0,
        "C": 0.4,
        "D": 4.2,
        "E": 1.7,
        "F": 0.7,
        "G": 0,
        "H": 4.7,
        "I": 0,
        "J": 2.5,
        "K": 0
      },
      "scores": {
        "A": [
          1,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "C": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          1
        ],
        "D": [
          0,
          2,
          2,
          1
        ],
        "E": [
          1,
          0,
          0,
          1
        ],
        "F": [
          0,
          1,
          0,
          0,
          0
        ],
        "G": [
          0,
          0,
          0,
          0
        ],
        "H": [
          3,
          3,
          0,
          0,
          1
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          1,
          0,
          0,
          2
        ],
        "K": [
          0,
          0,
          0
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": null
    },
    {
      "slug": "chess-com-coaches-annuaire",
      "name": "Chess.com Coaches (annuaire)",
      "url": "https://www.chess.com/coaches",
      "kind": "coaches",
      "type": {
        "en": "directory of independent coaches",
        "fr": "annuaire de coachs indépendants"
      },
      "price": {
        "en": "no annual price: lessons billed by each coach ($15 to $52/h seen on https://www.chess.com/coaches?page=2, ≈ €14-48/h); directory free — rule not applicable",
        "fr": "aucun tarif annuel : leçons facturées par chaque coach (15 à 52 $/h vus sur https://www.chess.com/coaches?page=2, ≈ 14-48 €/h) ; annuaire gratuit — règle non applicable"
      },
      "languages": 2,
      "read_at": "2026-08-30",
      "scored_overall": false,
      "overall_score": null,
      "unweighted_score": null,
      "category_scores": {
        "A": 0,
        "B": 0,
        "C": 0,
        "D": 5.8,
        "E": 3.3,
        "F": 0,
        "G": 0,
        "H": 2,
        "I": 0,
        "J": 5,
        "K": 1.1
      },
      "scores": {
        "A": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "C": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "D": [
          1,
          3,
          0,
          3
        ],
        "E": [
          0,
          0,
          1,
          3
        ],
        "F": [
          0,
          0,
          0,
          0,
          0
        ],
        "G": [
          0,
          0,
          0,
          0
        ],
        "H": [
          1,
          0,
          1,
          0,
          1
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          3,
          1,
          0,
          2
        ],
        "K": [
          0,
          1,
          0
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": null
    },
    {
      "slug": "preply-echecs",
      "name": "Preply (échecs)",
      "url": "https://preply.com/en/how-it-works",
      "kind": "coaches",
      "type": {
        "en": "Marketplace of tutors over video",
        "fr": "Marketplace de tuteurs en visio"
      },
      "price": {
        "en": "$45 to $85 per lesson depending on the tutor (≈ €41-78); no annual package and no fixed-price “chess” offer.",
        "fr": "45 à 85 $ la leçon selon le tuteur (≈ 41-78 €) ; aucun forfait annuel ni offre « échecs » à prix fixe."
      },
      "languages": 2,
      "read_at": "2026-08-30",
      "scored_overall": false,
      "overall_score": null,
      "unweighted_score": null,
      "category_scores": {
        "A": 0,
        "B": 0,
        "C": 0,
        "D": 5,
        "E": 1.7,
        "F": 0,
        "G": 0,
        "H": 5.3,
        "I": 0,
        "J": 0.8,
        "K": 1.1
      },
      "scores": {
        "A": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "C": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "D": [
          0,
          2,
          2,
          2
        ],
        "E": [
          0,
          0,
          0,
          2
        ],
        "F": [
          0,
          0,
          0,
          0,
          0
        ],
        "G": [
          0,
          0,
          0,
          0
        ],
        "H": [
          3,
          3,
          1,
          0,
          1
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          1,
          0,
          0,
          0
        ],
        "K": [
          0,
          1,
          0
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": null
    },
    {
      "slug": "outschool-echecs",
      "name": "Outschool (échecs)",
      "url": "https://outschool.com/online-classes/chess",
      "kind": "coaches",
      "type": {
        "en": "marketplace of live classes for children",
        "fr": "marketplace de cours enfants en visio"
      },
      "price": {
        "en": "Price per class, set by each teacher; weekly 55-minute club. No annual package.",
        "fr": "Prix par cours, fixé par chaque enseignant ; club hebdomadaire de 55 minutes. Pas de forfait annuel."
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": false,
      "overall_score": null,
      "unweighted_score": null,
      "category_scores": {
        "A": 0,
        "B": 0,
        "C": 0,
        "D": 2.5,
        "E": 2.5,
        "F": 0,
        "G": 0,
        "H": 2,
        "I": 0,
        "J": 4.2,
        "K": 3.3
      },
      "scores": {
        "A": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "C": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "D": [
          0,
          0,
          2,
          1
        ],
        "E": [
          1,
          0,
          0,
          2
        ],
        "F": [
          0,
          0,
          0,
          0,
          0
        ],
        "G": [
          0,
          0,
          0,
          0
        ],
        "H": [
          2,
          0,
          0,
          0,
          1
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          2,
          0,
          1,
          2
        ],
        "K": [
          2,
          1,
          0
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": null
    },
    {
      "slug": "komodo-dragon",
      "name": "Komodo Dragon",
      "url": "https://komodochess.com/",
      "kind": "engine",
      "type": {
        "en": "Commercial chess engine (NNUE)",
        "fr": "Moteur d’échecs commercial (NNUE)"
      },
      "price": {
        "en": "Not available: komodochess.com is unreachable (expired certificate, 500/502 errors). Komodo 14 remains free for non-commercial use.",
        "fr": "Non disponible : komodochess.com est injoignable (certificat expiré, erreurs 500/502). Komodo 14 reste gratuit en usage non commercial."
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": false,
      "overall_score": null,
      "unweighted_score": null,
      "category_scores": {
        "A": 0.4,
        "B": 0,
        "C": 0,
        "D": 2.5,
        "E": 0.8,
        "F": 0,
        "G": 1.7,
        "H": 2,
        "I": 0,
        "J": 1.7,
        "K": 1.1
      },
      "scores": {
        "A": [
          0,
          1,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "C": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "D": [
          0,
          0,
          0,
          3
        ],
        "E": [
          0,
          0,
          1,
          0
        ],
        "F": [
          0,
          0,
          0,
          0,
          0
        ],
        "G": [
          0,
          2,
          0,
          0
        ],
        "H": [
          0,
          0,
          0,
          0,
          3
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          0,
          0,
          0,
          2
        ],
        "K": [
          0,
          0,
          1
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": null
    },
    {
      "slug": "superprof-echecs-fr",
      "name": "Superprof (échecs, FR)",
      "url": "https://www.superprof.fr/cours/echecs/",
      "kind": "coaches",
      "type": {
        "en": "directory of private teachers",
        "fr": "annuaire de professeurs particuliers"
      },
      "price": {
        "en": "From €9/hour depending on the teacher (French App Store listing); price of the student Pass: not available (the site blocks crawlers).",
        "fr": "À partir de 9 €/heure selon le professeur (fiche App Store FR) ; prix du Pass Élève : non disponible (le site bloque le robot)."
      },
      "languages": 2,
      "read_at": "2026-08-30",
      "scored_overall": false,
      "overall_score": null,
      "unweighted_score": null,
      "category_scores": {
        "A": 0,
        "B": 0,
        "C": 0,
        "D": 5,
        "E": 0.8,
        "F": 0,
        "G": 0,
        "H": 4,
        "I": 0,
        "J": 2.5,
        "K": 0
      },
      "scores": {
        "A": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "C": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "D": [
          0,
          3,
          0,
          3
        ],
        "E": [
          0,
          0,
          0,
          1
        ],
        "F": [
          0,
          0,
          0,
          0,
          0
        ],
        "G": [
          0,
          0,
          0,
          0
        ],
        "H": [
          2,
          2,
          1,
          0,
          1
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          1,
          0,
          0,
          2
        ],
        "K": [
          0,
          0,
          0
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": null
    },
    {
      "slug": "chess-wizards-us",
      "name": "Chess Wizards (US)",
      "url": "https://www.chesswizards.com/",
      "kind": "platform",
      "type": {
        "en": "after-school classes for children",
        "fr": "cours périscolaires pour enfants"
      },
      "price": {
        "en": "Not available: signing up for camps and classes goes through a JavaScript app that shows no amount.",
        "fr": "Non disponible : l’inscription aux stages et aux classes passe par une application JavaScript qui n’affiche aucun montant."
      },
      "languages": 1,
      "read_at": "2026-08-30",
      "scored_overall": true,
      "overall_score": 0.64,
      "unweighted_score": 1.06,
      "category_scores": {
        "A": 0,
        "B": 0,
        "C": 0.7,
        "D": 0,
        "E": 1.7,
        "F": 2.7,
        "G": 0,
        "H": 1.3,
        "I": 0,
        "J": 4.2,
        "K": 1.1
      },
      "scores": {
        "A": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "B": [
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "C": [
          0,
          0,
          0,
          1,
          0,
          0,
          0,
          0,
          1
        ],
        "D": [
          0,
          0,
          0,
          0
        ],
        "E": [
          0,
          0,
          1,
          1
        ],
        "F": [
          2,
          0,
          1,
          1,
          0
        ],
        "G": [
          0,
          0,
          0,
          0
        ],
        "H": [
          1,
          0,
          0,
          0,
          1
        ],
        "I": [
          0,
          0,
          0,
          0
        ],
        "J": [
          2,
          1,
          0,
          2
        ],
        "K": [
          0,
          1,
          0
        ]
      },
      "evidence_urls": {
        "A": [],
        "B": [],
        "C": [],
        "D": [],
        "E": [],
        "F": [],
        "G": [],
        "H": [],
        "I": [],
        "J": [],
        "K": []
      },
      "sources": [],
      "review_url": null,
      "free_access": null
    }
  ]
}
