Inspiration
We all have letters that slow us down when we type, but we never really know which ones. Typing tutors give everyone the same drills, so you end up practising keys you've already mastered. We loved the Invisible AI idea of a product that just understands you without being asked, like Doomersion turning scrolling into language practice. So we asked: what if a typing game could quietly figure out your weak spots and train them while you're just having fun?
What it does
Weak Spot is a typing game where words fall from the top of the screen and you type them before they hit the bottom. You have 3 lives, and the game speeds up as you improve.
Behind the scenes, the game watches every key you press. It records your hits, misses and how fast you type each letter, and works out which letters are your weak spots. It then quietly chooses more words containing those letters, so you get targeted practice without ever opening a settings menu or talking to a chatbot.
Pressing F1 reveals what the AI has learned: your weakest letters, why they're weak (missed often or typed slowly), and which words were picked to train them. At the end of each game, a keyboard heatmap shows your weak spots in red. Your profile is saved, so the next session already knows you.
How we built it
We built Weak Spot in Python with Pygame, split into three parts:
- game.py handles the screens, falling words, typing input and difficulty.
- brain.py is the AI. It stores hits, misses and reaction times for every letter, and gives each letter a weakness score: miss rate × 3 plus how much slower it is than your average. When a new word spawns, words with weak letters get a higher chance of being picked.
- words.py is our word bank, including extra words with tricky letters like Q, Z, X and J.
We deliberately chose simple statistics over a neural network. One player doesn't produce enough data to train a model. Our approach starts targeting after about 30 keystrokes, updates instantly after every key press, and every decision can be explained, which is exactly what the F1 panel shows.
Challenges we ran into
- Measuring typing speed fairly. The time before the first letter of a word includes reading it, so we only time letters after the first. We also ignore gaps longer than 1.5 seconds, because that's usually a pause rather than slow typing.
- Not jumping to conclusions. Early on, one mistake could make a letter look weak. We wait until a letter has been typed at least 3 times and the player has pressed 30 keys before the AI starts targeting.
- Keeping it from getting repetitive. If the game only ever picked weak-letter words, it would get boring and stop learning about other letters. We made 25% of words random so it keeps exploring the whole keyboard.
- Making words easy to target. If two words on screen start with the same letter, it's unclear which one you're typing. We only spawn one word per starting letter at a time.
- Balancing difficulty. We tuned the fall speed so it gets faster with every word you clear but eases off when you lose a life.
- Time. We had only a few hours, so we had to keep the game simple and focus on making the AI part work well.
Accomplishments that we're proud of
- The AI genuinely works: if you keep fumbling one letter, you can watch it start appearing in more and more words.
- The F1 panel makes the invisible AI visible, so anyone can see exactly what it has learned and why.
- The keyboard heatmap gives players a clear picture of their weak spots after a single game.
- We built a complete, playable game with a menu, gameplay, game over screen and saved progress within the hackathon.
What we learned
- AI doesn't have to mean a chatbot or a huge model. A small, well-designed system can feel smart when it fits naturally into what the user is already doing.
- Choosing the right tool matters. Simple statistics were faster, more explainable and better suited to our problem than machine learning.
- Small details make a big difference to fairness, like ignoring pauses and waiting for enough data before deciding a letter is weak.
- How to build a game loop, handle keyboard input and save data with Pygame and Python.
What's next for Weak Spot
- Weak finger detection: group letters by finger to tell players things like "your left pinky is your weak spot".
- Letter pairs: track tricky combinations like "th" or "ck", not just single letters.
- Progress over time: a graph showing how your weak letters improve across sessions.
- Real sentences: a mode that uses full sentences packed with your weak letters.
- Beyond typing: the same invisible learning could power language learning, maths practice or accessibility tools that adapt to each person automatically.
Log in or sign up for Devpost to join the conversation.