Cubby is a caregiver-curated video app for teens and adults with autism and intellectual and developmental disabilities. A trusted adult builds a locked-down library of approved videos; the viewer watches only what's chosen: no search, no recommendations, no autoplay. I designed, built, and shipped it solo, end to end, using AI-native tools, live on the App Store.
I built Cubby for kids first, then the caregivers I interviewed redirected me. Teens and adults with autism and IDD had no calm, locked-down way to watch, and the people who support them were stuck stitching together workarounds.
So I pointed Cubby at them. Caregiver interviews confirmed the need, and the pivot walked me out of the COPPA minefield before I committed the real build.

AI coding agents let me build far past normal design scope. I owned the architecture, the interaction, the UI, and the code, and held the whole thing to a real accessibility and safety bar the entire way.
The strongest decision on Cubby was a pivot: away from a crowded kids-video market, toward a community that actually needed what I was building.

Cubby began as a parent-controlled kids' viewing app: a Parent Hub, child profiles, and a curated feed of kid-safe videos. Then YouTube Kids shipped "Approved Content Only" for free, where a parent handpicks every video and search is off. That was my pitch, released by the incumbent, at no cost. Sensical and Kidoodle were free too. Every version of the kids product was now competing against a free, better-funded version of itself.

The autism and IDD app market is active and well funded, but nobody was doing caregiver-curated video for teens and adults. The segment's own complaint is that everything is built for young children. My architecture, a locked-down library an adult controls for a viewer who should not wander, was already that product with the age grown up. Caregiver interviews confirmed the direction, and I wrote the decision rule before I made the calls so I could not move the goalposts afterward.
Each one names the question I was answering, the evidence I had, and what the decision cost. The reasoning is lifted from the decision log I kept while building.
YouTube Kids shipped “Approved Content Only” for free, a parent handpicking every video with search off. That was my original pitch, released by the incumbent at no cost. The autism and IDD segment had active, well-funded tools, and none of them were video.
What it cost: the entire kids market and every keyword that came with it.
Age tells you what to recommend and how to tune reading level. I built it, then took it out of the app and the database schema. Storing an age band is what manufactures the “actual knowledge” that re-triggers COPPA, so collecting it was the liability, not the protection.
What it cost: age-based personalization, and a feature I had already built.
| Capability | Viewer | Curator | Admin |
|---|---|---|---|
| Watch approved content | ✓ yes | ✓ yes | ✓ yes |
| Add videos to their own library | — no | ✓ yes | ✓ yes |
| Other profiles, roles, PIN, billing | — no | — no | ✓ yes |
| Scope | profile | profile | the login |
Parent and child is the easy model, and for an audience of teens and adults it is insulting. Curator is the dignity tier: a capable adult stocks their own shelf without ever touching the account. “Nothing about us without us” is a core value here, and a product that treats a disabled adult like a child gets rejected by the advocates who recommend it.
What it cost: a more complex permission model than a parent and child split.
check:contrast step runs in the build and fails it if any token pair drops below WCAG AA.Cubby had a finished 8-bit visual system. Sensory research for this population says avoid seven specific things, and the old system did all seven. Three per-profile modes replaced it: calm and balanced sit on light ground, engage inverts to a deep jewel ground with an amber accent for hyposensitive users.
What it cost: a complete design system, thrown away and rebuilt.
Three bugs in one batch. All three passed a clean build. All three passed a search of the shipped bundle. Every one was caught by opening the live app and reading what was actually on the screen.
The PIN wall protects the admin area.
Actually didAny signed-in session satisfied it. /parent/* was reachable by URL.
Accessibility filters apply to the video.
Actually didThe YouTube API replaces that element at runtime. Every visual setting did nothing.
Three sensory modes, three palettes.
Actually didThe fallback won the cascade. The attribute flipped. No color followed.
Bundle presence is not behavior. A passing build proves nothing about correctness. Anything touching sessions, guards, roles, or design tokens now gets tested by driving production.