Inspiration
The idea came from wanting to make a classic game like checkers more fun and engaging using AI. I wasn’t sure how it would turn out, so it was really just an experiment to see what was possible.
What it does
The game lets you play checkers in a way that feels smarter and more interactive. It uses AI to make moves, react with facial expressions based on the game’s state, and even add fun or insightful comments about what’s happening during the match.
How we built it
The game was built using popular web technologies like React for the user interface, Three.js for rendering game scene, and TypeScript to keep the codebase clean and maintainable.
Challenges we ran into
- messy Prompt API output: It was tough to turn the AI’s responses into proper structured JSON.
- slow on low-end devices: The game ran slower on older or less powerful devices, which hurt the experience a bit (like Macbook Air M1)
- chunky stream API data: The prompt stream API sent big chunks of data, making it harder to process smoothly.
- single-word Issues: Asking the Prompt API for just one word sometimes caused weird errors.
- performance bottlenecks: sending multiple requests to the Prompt API at the same time slowed things down and needed extra work to fix.
Accomplishments that we're proud of
- using Zod for structured outputs: Figured out a neat way to handle messy LLM outputs by using Zod to validate and set default values, which saved us a lot of headaches.
- smoother stream API: Tweaked the stream API so it sends data in a nice, steady flow instead of big chunks.
- faster Prompts: Got the prompts working faster by which made the game feel much snappier.
What we learned
- don’t fully trust the LLM: Always have a fallback in case the AI decides to go off-script.
- clean the output first: Learned the hard way to clean up the LLM’s output before trying to deserialize it :)
- AI can be GPU hungry: Didn’t realize just how much GPU power this kind of game could eat up.
- don't throw too much at LLM: It's just better to do as much as possible "the old way" and opt in for LLM where it makes sense.
What's next for what-did-i-miss
I’m planning to take this framework and build something more complex—a billiard simulator.


Log in or sign up for Devpost to join the conversation.