2026-09-30 · 5 min read
I Build Software for My Family
The first version of StorySpark's landing page said "Join 50,000+ families."
It had no families. It had no accounts. That number was a fossil from an older way of building, the version where you make the thing and then invent the proof that people want it, because the proof is the pitch. I had built that page before I'd earned a single one of those families. The honest number was one.
That one is the whole point.
Most software is built for a market: a funnel, a wedge, a total addressable something. I've built plenty of that. But the tools I keep actually using were built for an audience of one household. A specific kid at bedtime. A specific meltdown at 7:47 in the morning. The specific friends I want nearby without scheduling a call. Building for people you love does something strange to the work. It removes every reason to fake anything, and it raises the bar on the parts that matter.
Three tools, one household
Bedtime. I built StorySpark so that bedtime could be a story made for my kid instead of a routine we both endured. You set up a child once (name, age, what they're into this month), and each night you pick a spark and a length. A new story streams onto the page while a watercolor cover paints itself and a narrator reads it aloud. Tonight's story, made for them.
The hard morning. Every parent of a toddler knows it: the wrong cup, the wrong sock, and every gentle-parenting script you've ever read gone from your head exactly when you need one. So I built Toddler Talk. You tap what's happening and, in about two seconds, it hands you three things you could actually say, each labeled with why it works. Not a parenting course. The words, in the moment, one-handed.
The people around it. The instinct doesn't stop at my kids. Pickle Party is a porch light: one always-on video room where close friends can see who's around before deciding to drop in. Camera on by default, no meeting to schedule, no "let's find a time." It's the opposite of a calendar invite. Presence you can feel from the doorway.
Three domestic moments. None of them a market.
The layer below: care is the hard part
When you build for strangers at scale, the hard problems are growth: acquisition, retention, conversion. When you build for people you love, the hard problems move somewhere more serious. They become questions of safety and honesty, and they get harder, because the cost of getting them wrong is someone you know.
Toddler Talk has to know a bad morning from a real crisis. A parent typing "my toddler hits me" needs parenting scripts. A parent typing something that signals they might harm themselves or their child needs a hotline, immediately, with no model in the loop. Telling those apart is the difference between a helpful app and a harmful one. So the first thing every input hits is a safety gate that separates a parent in crisis (routed to 988 and Crisis Text Line) from a parent at risk of harming a child (routed to the National Parent Helpline and Childhelp) from the ordinary hard question. It uses whole-word matching rather than loose substring matching, specifically so that "my toddler hits me" passes through to help instead of being flagged as violence. The first version got that exact case wrong. Fixing it is the reason the second version exists.
StorySpark has to never frighten a child. The story prompt is pinned so that nothing frightening, sad, or unresolved reaches the page. A small, boring, non-negotiable guardrail that matters more than any feature. Underneath, three models cooperate: one streams the text with its "thinking" turned off so the first words appear fast, one paints the cover, and one returns raw audio that the server stitches into a playable file. I wired them together because the domain, what makes a good bedtime story for my kid, was the part only I could supply.
Pickle Party has to not become noise. An always-on room is worthless if it pings everyone every time someone flickers in and out. So the "party's on" notification fires only when the room goes from empty to occupied, and not again until the room has been empty for a full minute: a tiny state machine whose entire job is to protect my friends' attention. The subscriptions that receive those pings are encrypted at rest, so a leaked link is inert. When the users are adults you care about, privacy is the safety surface.
None of these is a hard coding problem. They're judgment calls: a real crisis can't wait on a language model, "unresolved" is the wrong note at bedtime, your friends' attention is not yours to spend. I've held those judgments as a parent and a friend for years. What changed is that I can now enforce them in software.
The honesty the audience forced
Every one of these is a second version. The first versions looked finished and did nothing: a bedtime app that couldn't make a story, a coach that couldn't coach. And each first version came wrapped in the same costume, confident marketing, invented numbers, the "50,000 families" energy.
Building for a market taught me to fabricate proof. Building for my family cured me of it, because there's no one to fool. My kid will tell you in about four seconds whether the story is good. You cannot A/B test your way past a bored four-year-old. The audience is small enough that the only viable strategy is for the thing to work.
So let me hold myself to that here too.
- StorySpark isn't local-first. My kid's name and interests go to a database and to the model that writes the story. That's a real trade I made for a real feature, and it's the one I'd most want another parent to know before using it.
- Toddler Talk's live coaching depends on a key being switched on in production. Without it, the bundled playbook still works but the real-time part doesn't.
- Use is uneven. How often we actually reach for these is the only proof that counts, and it varies by the week, which is the truth about most things in a house with small kids.
Close
The "50,000 families" number was a wish dressed as a fact. The truer number is one household, and that turns out to be a harder audience to satisfy and a better one to build for. They review the work every night. They can't be spun. And when something I made actually helps, when the story lands and the room goes quiet, I know it's real, because the person telling me is small and honest and mine.
Build for the people at your own table first. If it works there, it was never a toy.