High Schooler Builds Pokémon AI Solo: A Technical Breakdown of a Top-1% Ladder Climb

A high schooler's Pokémon AI bot hit top-1% globally using MCTS + a hand-crafted value network.
A high school student built a Pokémon Showdown bot that reached 2137 Elo and the global top 1% using Monte-Carlo Tree Search paired with a 368-feature value network. The project demonstrates that hybrid "search + learning" architectures remain highly competitive, especially under resource constraints — and that domain knowledge plus classical algorithms can outperform end-to-end deep learning when data is scarce.
A Solo High School Project Reaches the Top 500 on the Ladder
In the AI world, we usually hear about massive models trained by big tech companies with hundreds of millions of dollars. But this story is different — it's about a high school student headed to college for computer science, and a Pokémon Showdown bot he built entirely on his own during his spare time.
This purely passion-driven solo project achieved a remarkable result: an Elo rating of 2137, a GXE (Game Expected Score) of 81.9%, placing him in the top 500 on the competitive ladder — the global top 1%.
The Elo rating system was designed by Hungarian-American physicist Arpad Elo in the 1960s for chess. Its core idea is to use the difference between two players' ratings to predict win probability, then dynamically adjust scores based on actual outcomes. Pokémon Showdown uses a modified version of Elo; a score of 2137 in the top ~1% means this bot has demonstrably outperformed 99% of active players. GXE (Glicko Expected score) is a metric derived from the Glicko rating system, presenting a player's true win rate estimate as a confidence interval. It better captures uncertainty when sample sizes are small compared to a single Elo number — which is precisely why the author chose it over a simple win rate, reflecting statistical rigor.
For a developer who self-describes as a "machine learning beginner," this result is not just a proof of technical skill — it's a testament to the power of combining classic search algorithms with neural networks.

Architecture Breakdown: Search First, Neural Network as Support
When most people think of game AI, their first instinct is deep reinforcement learning or large language models. But this project's design philosophy is the opposite — search algorithms form the core skeleton, with the neural network serving only as an auxiliary "intuition" layer.
Monte-Carlo Tree Search: Simulating Every Possible Path
At the heart of the bot is a decision-making strategy built on Monte-Carlo Tree Search (MCTS). MCTS originated in 2006, first applied to Go programs by researchers like Rémi Coulom, and has since become one of the core algorithms in game AI. It works in four phases: Selection, Expansion, Simulation (Rollout), and Backpropagation. Each iteration starts from the root node and dynamically balances "exploring unknown branches" against "exploiting known advantages" using the UCB1 (Upper Confidence Bound) formula, ultimately estimating win probabilities across nodes by statistically aggregating large numbers of random simulations.
In the author's own words, it "simulates and pursues different parallel worlds for every possible outcome," extending promising branches several turns into the future.
Pokémon battles are fundamentally an imperfect-information, highly stochastic game. The game-theoretic complexity is far greater than intuition suggests: each turn can involve hundreds of possible action combinations, compounded by move accuracy (e.g., Thunder's 70% hit rate), critical hit probability (~6.25%), status conditions (burn, paralysis), and the invisible information of the opponent's team. Academics classify this as an "Imperfect Information Stochastic Game," more analogous to poker than chess. This is precisely why traditional Minimax-based exact search is prohibitively expensive here, while MCTS is a natural fit — it doesn't require precise modeling of the state space, instead approximating expected payoffs through sampling. By running a large number of simulated games, the bot ranks every available action and selects the one with the highest expected win rate.
Interestingly, the author also injected a small amount of randomization into decisions to avoid being too predictable. In competitive play, once an opponent can perfectly anticipate every move, even the strongest algorithm becomes exploitable. This detail reflects the author's genuine understanding of competitive game theory.
Value Network: "Intuition" as a Fallback for Hard-to-Search Scenarios
While search is the primary driver, pure search has blind spots — certain threats (like a "sweep" strategy) require long-range positional judgment that brute-force search struggles to cover.
To address this, the author trained a Value Network with 368 hand-crafted features, trained on self-play game data to predict the final winner, achieving approximately 70% accuracy.
Before the rise of deep learning, machine learning systems relied heavily on "feature engineering" — domain experts manually designing input variables to transform raw data into structured representations that models can learn efficiently. The author's 368 features cover key competitive factors: current HP ratios, field state (weather, terrain, stat stage changes), type matchups between Pokémon on each side, speed tier comparisons, and more. This approach of "injecting human knowledge" often outperforms letting a model learn representations from raw state when data is limited — the latter typically requires millions of battle records to converge, a scale difficult to achieve in a personal project. A 70% prediction accuracy is a solid baseline for this task.
The value network doesn't dominate decisions at all times; rather, it serves as the critical deciding factor in only about 5–10% of turns. It functions more like the intuition of an experienced veteran — providing a crucial judgment boost when the search algorithm is uncertain or when facing well-known threat patterns.
Why Measure Performance with Win Rate Instead of Loss Curves?
There's a methodologically noteworthy choice in this project: performance is judged by real-game win rate with confidence intervals, not the loss curves typical of traditional machine learning.
The reason is that the system's backbone is a search algorithm, not an end-to-end neural network. The neural network is just one auxiliary module; looking at training loss alone doesn't accurately reflect the bot's real-world performance. The true test is its actual win rate against humans and other bots on the competitive ladder.
This results-oriented mindset — measuring performance with statistical confidence intervals — is closer to the essence of engineering practice: good model metrics don't guarantee real-world performance. Actual match results are the final judge. It's a valuable reminder for anyone who obsesses over optimizing training metrics.
The Value of Hybrid Architecture: "Search + Learning" Still Has a Lot to Offer
Perhaps the biggest takeaway from this project is that it validates a path obscured by the large model hype cycle: the "search + learning" hybrid architecture remains highly competitive in specific domains.
This approach shares its lineage with DeepMind's AlphaGo. AlphaGo, released by DeepMind in 2016, was the milestone validation of this paradigm: it used a Policy Network to narrow search breadth and a Value Network to replace time-consuming random simulations, boosting MCTS efficiency by orders of magnitude. The later AlphaGo Zero went further, learning entirely from self-play from scratch and ultimately surpassing the best human players. This "Model-Based Search" paradigm went on to influence breakthroughs from protein folding (AlphaFold) to mathematical theorem proving (AlphaProof).
The Pokémon bot in this article follows the same division of labor — MCTS handles lookahead, while the neural network provides policy and value intuition — except that the neural network's weight is deliberately reduced, leaving hand-crafted features and classical search to do more of the heavy lifting. For a personal project with limited data and compute, this tradeoff is actually the more pragmatic and efficient choice.
For developers with limited resources, this offers a valuable perspective: you don't have to pursue end-to-end deep learning for everything. Combining domain knowledge (368 hand-crafted features) with classical algorithms (MCTS) can still produce a top-tier system.
Closing: Passion-Driven Learning Is the Best Kind
The author freely admits this was a project built "purely for fun" — a boost for his resume and portfolio, and a fond revisit of a childhood passion. As a machine learning beginner, the entire process was an outstanding hands-on learning experience.
In an era where AI engineering is increasingly industrialized and the barrier to entry seems to keep rising, a high school student climbing into the top 1% of a competitive ladder through passion and dedicated study — using a relatively classical technical stack — is genuinely inspiring for every beginner. It tells us: understanding the essence of a problem and choosing the right tools matters far more than blindly stacking the latest technologies.
The project is open source on GitHub. Interested readers can explore the extensive edge case handling and feature engineering details there.
Key Takeaways
Related articles

Felix Rieseberg Personal Homepage
Felix Rieseberg's personal homepage sparks attention on Hacker News. This article covers the Slack engineer's technical background, the rise and fall of nativefier, and the value of a developer homepage as a tech calling card.

@ai-sdk/vue 3.0.306 Patch Release Syncs with [email protected] Update
@ai-sdk/vue 3.0.306 released, synced with [email protected]. A routine patch release for the Vercel AI SDK ecosystem with no public API changes; the Vue adapter layer stays version-aligned with the core package.

Gemini 4 Argon API Launches: The Era of Million-Token Output Begins
Google launches Gemini 4 Argon with sparse MoE architecture, up to 1M output tokens, and a 68.90% Vals Index score, available across API, AI Studio, and the Gemini app.