Toddler Typist: Turning Keyboard-Smashing Into a Storybook πŸ“šβœ¨

Community Article
Published June 14, 2026

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.

Community

Sign up or log in to comment