Lullable: Adult Sleep Stories
Inspiration
Every sleep app we tried did one of two things wrong. It either bored us into staring at the ceiling, or it interested us into staying awake. Meditation apps ask you to sit quietly with your own thoughts, which is exactly the problem at one in the morning. Sleep-story apps, strangely, build cliffhangers into their narration, which is the last thing a tired adult brain needs.
We think the overthinking mind is not broken. It is a curious brain with forty open tabs and nothing peaceful to chew on, so it runs Tuesday simulations instead. You do not need to force it shut. You need to give it something worth pondering and then take the pressure off.
That is Lullable. A very well told, very calm true story about something fascinating, a Roman bathhouse at closing time, the twenty-three centuries after Aristotle, the light still arriving from the Pillars of Creation, read so softly that finishing it was never the point. The finest possible outcome is that you learn something brilliant tonight and lose it by midnight.
The Shipaton gave that idea a deadline. "The sleep app that tells you the ending first" had lived as a napkin pitch for a while. This was the push to carry it all the way to something installable, with real monetization behind it, instead of one more landing page promising a future app.
What it does
Lullable is an iPhone app of long-form sleep stories for adults, with one rule baked into every episode: the story tells you the ending in the first minute. There is no reason to stay awake to find out what happens, because you already know. Nothing is a cliffhanger, by design. Nothing to follow, nothing to remember.
A few things follow from that rule.
There is no sleep score. The app does not measure you, rank your nights, or turn rest into one more metric to manage. It plays a good, calm story and asks nothing back.
The narration voice is fixed and held to the same bar every time: warm, academic, unhurried, explicit subjects, no "here's the fascinating part," no listicle rhythm. Each story is read by a named narrator you get to know, David from Oxford, Amy from Greenwich, so the voice feels like a person rather than a setting.
The catalogue is real, not filler. Ancient Worlds, Cosmic Journeys, Gentle Nature, Cozy Tales, each episode thirty to forty-five minutes, each with its ending given away in the blurb before you press play.
The app picks one story for tonight so you never have to browse at bedtime, and tells you in a line why this story tonight. If you would rather choose, the library is there. A sleep timer and a fade to silence mean the story never stops abruptly; it simply gets quieter until it is gone. A fifteen-second skip and a resume card handle the nights you drift off early and want to pick up where the story left you.
It is free to download with enough episodes free to prove the premise, and a subscription at 2.99 dollars a month, metered through RevenueCat, unlocks the rest of the catalogue.
How we built it
This was a two-track build. The stories and the app on one side, and a content engine to bring people to them on the other. We leaned on Claude for both.
The app itself is native SwiftUI, with RevenueCat wired in for the free-tier and subscription paywall. The 2.99 dollar price was confirmed and configured before the App Store listing went live, not after.
Story scripts were written with Claude and then compiled into ElevenLabs-ready SSML under a strict rhythm contract: pacing, break tags, the ending-given-away structure. That contract is why every episode sounds like it came from the same narrator even though none of them were hand-timed one at a time.
The marketing site is deliberately boring infrastructure. Static HTML, a Python generator of roughly 250 lines, no CMS, no database. The posts and catalog folders of markdown files are the source of truth, and git is the CMS. One command builds, validates, commits, and pushes; Vercel's GitHub integration does the rest. It costs nothing a month beyond the domain.
That generator runs a hard content gate on every build. Any medical claim, any "cures X," any promised outcome like "fall asleep faster" aborts the build before a single file is written. A published post beats a skipped day, but a published health claim is worse than nothing.
Every price the site cites, about itself or about competitors, is checked against the vendor's own listing and dated. A wrong number in a comparison table would undercut the one thing a comparison page is for.
Challenges we ran into
This is the first app we have built together from start to finish, and the honest answer is that we suffered a bit, and the suffering made it better.
The narration pipeline had a bug in the pipeline itself. The path from a Claude-written script to SSML to ElevenLabs audio to a file the app actually plays has several handoffs, and one of them silently mangled pacing and break timing on a subset of episodes. The audio was technically valid. It just did not feel calm when you lay in the dark and listened. It surfaced late, during listening QA rather than in any automated check, and the fix was to make the SSML compile step assert on the exact contract the voice depends on, instead of trusting that "it rendered" meant "it sounds right."
Two automated loops raced each other for the same repo. The daily-essay build and the Instagram scheduler both write to main, and a push landing between one script's build and its own push got rejected outright once real content was committed. We fixed it by rebasing inside the deploy step itself, so a real conflict stops the deploy instead of silently merging around it.
We trusted a third party's usage numbers instead of our own count, and got it wrong. A scheduling credit is spent the moment a post is booked, not when it publishes, and the billing cycle was anchored to our signup date rather than the calendar month. Our locally tallied budget looked fine and was quietly off. We switched to reading the provider's live usage endpoint and stopped trusting our own arithmetic.
We said no to invented proof. It was tempting to ship placeholder testimonials so the landing page looked further along than it was. We pulled the section instead. The page ships without it rather than with a lie, until there are real, permissioned quotes to put there.
Accomplishments we're proud of
We carried this from a napkin pitch to a working app with real, priced monetization behind it. Not a demo, not a landing page.
The "give away the ending" idea, which started as a one-liner, turned out to be load-bearing for almost everything else: the narration voice, the blurb copy, even the content-gate rules that keep the site's writing honest.
A content and distribution engine that costs nothing to run and needs no admin panel. Everything is a file, and the whole system fits in one afternoon of reading.
We caught ourselves before shipping fake social proof, and held that line even when it made the page look less finished.
What we learned
Building with Claude end to end, not just for code but for the narration scripts that are the product, taught us that the collaboration works best under a strict, written-down contract: voice rules, word-count gates, a prohibited-claims list. Not vibes. The automated gate that rejects a bad build was worth more than any amount of "sounds good to me" review, and the same turned out to be true for audio. The pipeline needed an assertion on its own contract, not just a human listening after the fact.
We also learned that shipping a wellness product raises the bar for honesty above a normal app. No invented testimonials, no unproven claims, no score dressed up as science. We are not a treatment and we do not pretend to be.
And mostly, this was our first time carrying an app all the way from idea to something installable. The iteration, the QA that felt endless in the middle, the small good decisions that compounded, that is what actually taught us how to do this. What came out the other side is something we are proud of.
What's next for Lullable: Adult Sleep Stories
Ship the first public release on the App Store before the Shipaton window closes. Everything above is built and working; the launch itself is the next concrete milestone.
Grow the catalogue past today's episode count, one narrator persona per category, holding every new story to the same ending-first, warm-academic standard.
Replace the removed testimonials section with real, permissioned Sleep Tester quotes once there is a real audience to draw them from.
Open the Creators program so sleep and wellness voices who already love the format can share it with their audiences and be paid for the subscribers they bring.
Built With
- codex
- higgsfield
- instructure-canvas
- react-native
- swift
Log in or sign up for Devpost to join the conversation.