On Blunderbuss: AI and the Personal Software Revolution
How a chess-training app for my son became a lesson in building personal software with AI.
Originally published on X, 3 September 2026.
My son, 7, is a strong chess player in the Chinese Chess Association. His coach mentioned a couple months ago he should focus on some special defensive play and I thought “I could actually just build an app to analyze his chess.com games and give him targeted practice”. Thus was born Blunderbuss, which is squarely in the new category of hyper-personalized vibe coded apps.
It started off as almost fully a backend implementation of stockfish analysis of games plus a front end of 5 daily practice sessions. The sessions consisted of positions from his real games plus, if those ran out on a given day, a suitable backfill of puzzles from the lichess database. Then I thought it would be fun to add streak freezes and some badges for completing training, so I did.
Then I thought it would be good to add some bots, but stockfish is more for seeing perfect play and for analysis. You want to play against bots that feel more human, so after some research I added the Maia 3 engine. I told the AI to make a bunch of bots at different levels and styles of play, and it dutifully added some silly images for them as well and my son was delighted to beat ever higher ELO bots (his highest win around 2200 ELO, I believe).
I added some polish here and there, fixed board problems and tinkered with sounds and so on and then I thought it would be a lot of fun to build a 2d game where if you beat an 1100 ELO bot, you open a portal into an RPG world where everyone plays chess and you go around to different island nations beating chess players. I had little secrets you had to find and conversations you had to have to advance the game, and it was very fun to do at first—I have never built a game before—but I soon found the asset creation very onerous even with AI. I wanted to focus on building out the game and I was still spending a tremendous amount of time trying to get the AI to put things together correctly. I was also spending money on premade assets to decrease my time commitment, but somehow also learning Aseprite and Tiled. Neither interested me as much as moving my world along so my son could be having fun playing chess. I had seen a bunch of people making things in three.js, so I had the dumb idea that a 3d world might be much easier for the AI to create for me.
That was also the wrong direction, because while I learned a lot more about how 3d is differently abled from 2d, the whole thing was a terrible time sink and distraction from what I really wanted to do, compounded by the discovery that my son was just enjoying wandering around my meticulously crafted (for a relative idiot craftsman) 3d world, which nevertheless didn’t have much chess content in it yet.
I leave a long video below if anyone wants to see what it looked like before I binned those couple weeks of work. It’s long and pretty irrelevant at this point so I’d skip it unless you just like the sound of my voice (which is, in fact, a great reason, but I suggest you just keep reading for now).
Watch the earlier 3D world walkthrough on X.
What I eventually settled on was the idea of a chess career simulator, which would combine handsome 2k AI generated images, nicely composited, into a map of the real world a kid can travel around on and compete against other chess players. That’s what Blunderbuss is now.
With Blunderbuss, you enter your kid’s chess.com or lichess username (along with your sign-up code) and then he chooses which club he wants to join. Currently we have New York, Moscow, Havanna, Chennai, Chengdu, and Tokyo as possibilities. Every morning around 4 am local time, the server scrapes recent games, adjusts training strategy as necessary, and builds today’s training session.
The user is made to understand that his local chess federation has taken an interest in him and so is willing to pay a stipend to him for travel and other expenses so long as he does his training. This is paid in the game currency lev, which is a way to nod at @GothamChess and say thanks for all the videos and also use a real-sounding currency that doesn’t exist anymore because of the evil European Union or whatever.
From the training tab, the user can see great past games, learn systems, and do opponent preparation for upcoming tournaments. Some tournaments may even be gated by having done the proper preparation for bots that play certain openings or systems or styles.
The ‘Compete’ tab can have one of two things on it. Normally, you are allowed to challenge whatever players happen to be there that week. Bots can actually travel all over the game world, so although there are always local people in your home club you can challenge, there may also be people there from other cities. In this mode, you don’t earn lev or trophies or badges, but you can win a player’s “card” which is kind of like a playing card for every bot in the game. Each bot has its own unique style of play.
The other thing the ‘Compete’ tab might have on it is the tournament you’re currently in: then it switches to tournament mode and you have to play against five strong players across a weekend. These only open Saturday and Sunday. Competitions work by special events which show up in your mail and they are very particular to a region and perhaps to a style of play. I wanted my son to learn geography as well, so I’m adding a tremendous amount of detail. His first tournament, this weekend, is going to be in Wasilla, Alaska. I assume the real Wasilla has no big chess club, but the one in Blunderbuss had heard of my son’s prowess and wanted to pay for his ticket to their local tournament. I haven’t done this before, so I wanted to try it out on a town that doesn’t matter. Sorry, Wasilla. And also, you’re welcome, Wasilla.
Another detail about the world is that it is alive. As I already mentioned, bots travel. However, they also compete against one another. Every few days you get a newsletter in your inbox that tells you what the current world rankings are.
Let’s check out Moscow:
As you can see, each location you fly to has its own local style. But each location also has its own city map.
As I flesh these out, they’ve got their own distinct activities to do. Right now Moscow just has the analysis hall; you can always do your training in every city you’re in. But to see a bit more stuff, let’s hop back to NYC.
NYC is actually our home turf, so it has the player’s home where he can see his trophies and badges. It has various locations to meet players and challenge them. And since it is NYC, it also has a ‘special’ career ladder, that of “Central Park Hustler”. This is a totally separate achievement in the game special to NYC and available to you via a message that comes in your inbox if you chose NYC as your home base (I’m generating proper demographically accurate bot art for this one now but for the moment it has a stand-in).
I want to add a ton of content, amusing side quests, probably a sprinkling of zany characters and career progressions and so on to make the app feel somewhat magical—just a little—amidst the normal realistic progression system.
There’s a lot more going on but I’ll leave it there for now. I’m a dad building an app for his son. If anyone has read this far and would like me to share it with their kid, feel free to DM. I make no guarantees about it but I do intend to keep deepening it and making it more fun and useful for my own son and would be happy if anyone took an interest and had an opinion about it.
Oh, here’s a couple of shots of the arcade, which houses all the old bots from the original Blunderbuss.
And here’s the board one sees everywhere (there are options to change board style, pieces, sound).
I should point out that the chess board/games have the usual game review, eval, and training wheels you’d expect from a complete chess app. The backend is in many ways much more complete than the front. Many such cases.
Thanks for reading.