Who’s That Pokémon 🟡⚡

Inspiration

We wanted to build a game that blends nostalgia, knowledge, and modern web engineering. Pokémon is universally recognizable, and guessing-based games naturally drive curiosity and retention. The idea was to go beyond a simple quiz and create an experience that feels progressively challenging, replayable, and intelligent, while also serving as a strong showcase of frontend, backend, and AI-driven logic.


What it does

Who’s That Pokémon is a web-based guessing game where players identify Pokémon using progressively revealed clues. The game offers multiple modes such as silhouette guessing, Pokédex clue deduction, stat-based puzzles, and daily challenges.

Key features:

  • Progressive hint system (sprite, type, stats, generation, clues)
  • Daily challenge shared across all users
  • Scoring based on speed, accuracy, and hints used
  • Streaks and leaderboards
  • Intelligent fuzzy guess handling
  • Multiple game modes for casual and competitive players

How we built it

  • Frontend: Next.js with Tailwind CSS for fast rendering and responsive UI
  • Backend: Node.js with API routes handling game sessions and validation
  • Data Source: PokéAPI for Pokémon stats, sprites, types, generations, and descriptions
  • State Management: Client-side state for gameplay + server-side validation for fairness
  • Caching: Aggressive caching of PokéAPI responses to reduce latency and API load
  • AI Layer:
    • Smart hint generation
    • Fuzzy guess matching
    • Adaptive difficulty based on player performance

The game logic was designed as a pure engine layer, separate from UI, making it easy to add new modes without rewriting core systems.


Challenges we ran into

  • Preventing name leakage in Pokédex descriptions while keeping clues meaningful
  • Balancing difficulty so the game is neither trivial nor frustrating
  • Handling fuzzy guesses without accepting incorrect Pokémon
  • Ensuring fair play for daily challenges (server-authoritative Pokémon selection)
  • Managing PokéAPI rate limits and inconsistent data across generations

Accomplishments that we’re proud of

  • Built a scalable game engine that supports multiple modes
  • Implemented adaptive difficulty without heavy ML infrastructure
  • Designed a daily challenge system that encourages social sharing
  • Achieved high replayability using simple mechanics and data-driven logic
  • Created a Pokémon fan project that is IP-safe and API-first

What we learned

  • Small gameplay tweaks (hint order, scoring curves) have huge impact on retention
  • Caching and preprocessing API data is critical for performance
  • AI doesn’t need to be complex to feel intelligent—good heuristics go a long way
  • Separating game logic from UI drastically improves maintainability
  • Constraint-based design leads to more creative solutions

Built With

  • aistudio
  • geminiapi
  • nanobanana
  • pokemonapi
Share this project:

Updates