Toddler Typist: Turning Keyboard-Smashing Into a Storybook πβ¨
As a stay-at-home mum, one of my biggest struggles is keeping my toddler entertained and busy. Whenever I try to open my computer to do something, he comes running and starts smashing the keyboard.
So I wondered: can we use this as a way to entertain him?
I built this as part of the Build Small Hackathon, which felt like a perfect prompt for this kind of project: small, local, playful, and useful. My background is in decentralised systems, so I am naturally drawn to the idea of smaller models too. I like that they can make AI feel a little less concentrated in the hands of a few big companies, and a little more like something people can run and adapt themselves.
The idea was simple: let him smash the keyboard, then have AI generate a cute childrenβs story from it, as if he had written it himself. I could then read the story out loud to him. At the end, the AI would also create a drawing based on the story, for even more entertainment. π¨
The whole thing is created βbyβ the toddler. The AI is merely translating toddler speech into adult speech.
You can try the app here: Toddler Typist
I used Codex to build the first iteration. For the story model, I started with a small Qwen2.5 0.5B model. For image generation, I used Stability AIβs SD-Turbo model locally on a Hugging Face GPU Space. SD-Turbo is a fast text-to-image diffusion model designed to generate images in very few steps, which made it a good fit for an interactive storybook demo.
Using Codex, I then iterated on the app. I built a custom frontend beyond the Gradio UI, as suggested during the hackathon, and made small improvements to the story generation, such as making sure the model did not stop mid-sentence.
This worked pretty well, but sometimes the stories were a bit weird and did not make too much sense. So I decided to fine-tune the model.
The idea was to use a bigger model to generate a training set for the smaller model. I created a synthetic dataset with Claude 4.6, then fine-tuned the story model with Unsloth on Modal.
The examples were designed around the actual interaction pattern: toddler keyboard-mashing in, short magical story continuation out, with optional themes like dragons, space, ocean, and fairies. After fine-tuning, I exported the model to a Q4_K_M GGUF file and pushed it to Hugging Face, so the Space could run it locally with llama.cpp.
The goal was less about making a huge model smarter, and more about teaching a tiny model the exact behavior and tone this app needed.
Model: sa8/zog-qwen2.5-0.5b-storybook-gguf
This actually worked pretty well and improved the coherence of the stories while keeping the model small. It was also a fun reminder that small models can be really useful when the task is narrow, playful, and well-defined. π
Next step was then filming the demo. Doing so with an actual toddler was its own challenge. He happily stress-tested the app by smashing the keyboard, switching screens, and reminding me why this project exists in the first place.
You can watch the demo here: Toddler Typist demo.
For a next iteration, I would love to add a proper full-screen toddler mode, so the story stays on screen and tiny hands cannot accidentally switch apps or open random shortcuts quite so easily.