Bedtime in our house hit a wall. My kid wanted a new story every night, and "the one about the dragon, but different" is a rough brief at 8pm when you are running on empty. So I built the thing I wished existed, solo, and shipped it.

Träumli is a bedtime-story app that writes a fresh, personalized story with your child as the hero: you set up who they are and a couple of guardrails, and you get a story to read aloud in a few moments. This post is the developer cut, and it is honest in two directions. Honest with parents about what the AI can't do, and honest with you about what broke the first time I shipped it.

The honest part parents actually feel

I lead with what the app can't do, on purpose. It does not replace you reading to your child, and it does not read to them for you. The stories are fiction by design, because an LLM will state a wrong fact with total confidence and bedtime is not the place to find out. AI can spin a new dragon every night; it cannot know your daughter cried at preschool today and might want to process those feelings. That line is the product, not a disclaimer I buried in a settings screen.

That stance has a technical consequence, and being honest about it matters. Each listener carries an exclusion list (no thunder tonight, no scary forests, whatever the current fear is). That list goes into the generation request as an explicit priority: the boundaries outrank the story goal, so if the two ever collide the model is told to follow the boundaries and fall back to a calm alternative. The output is then schema-validated before anything is shown, so a malformed payload is rejected instead of rendered.