- Role
- Everything: product design, React Native app, Supabase backend, web checkout, admin tools, releases, and ongoing maintenance.
- Team
- Me, with one of the owners as my product partner
- When
- Jan 2026 – now
Workshop Labs, contract - Built with
- React Native, Expo, Supabase, Stripe, PostHog, Sentry, ElevenLabs
01Context
Self-Talk+ is a subscription app of daily self-talk audio programs, from a brand that has been around since 1981, with more than 5,000 five-star ratings. The app had been handed from developer to developer for years, and it ran on an aging Flutter and Firebase stack with known bugs, including people who cancelled and kept their access.
In January 2026 I rebuilt the app from the ground up in React Native and Supabase, and redesigned the product along the way. I design, build, and maintain it, with one of the owners as my product partner.
02Constraints
A launch with no disruption.
Subscribers kept using the app the whole time, so the switch couldn't interrupt payments or the live app.
A complete data migration.
All of the app's data had to move to the new database, intact, as part of the switch.
Support ready on day one.
The support team had to know the new app before customers started asking about it.
03Onboarding
Most people didn't know where to start.
- Pick up to two focus areasConfidence, peace of mind, relationships, career, health, or goals.
- Pick what feels trueEach statement is written for one program. Pick up to three.
- Rank themWhat do you want to tackle first?
- Get your starting programYour first pick becomes the program you start with.
- Ready to focusIt becomes My Focus on Home, with a daily listening goal and three habits that make it stick.
With 50+ programs, a lot of new listeners didn’t know where to start, and many had a hard time putting a name to what they were dealing with.
So I rebuilt onboarding to start from what each person needs. You pick a couple of focus areas, narrow them to the things that feel true, and rank them, and we recommend a program from the top of that list. It also shows us which programs people start with, and how each one converts from trial to paid.
The plan screen at the end of onboarding.
Sign-up already ran through a web checkout. I redesigned it and added the same program finder as the app, so people pick a focus and get a starting program before they reach the plan screen.
That screen led with the monthly plan. Self-talk is a daily habit, so now the annual plan comes first, preselected and framed as five months free, with the same 30-day trial on both plans. It shipped on the web in July and in the apps in August, and annual plans went from about 15–18% of new trials to over 35%.
04Decisions
Built like the music apps people already use.
In the old app, a program opened as a sheet of navy cards under a yellow Play Full Program bar, and the player was a title, a cover, and a few controls. Some listeners play a whole program in order, and others want one session on repeat, so a program now works like an album: its sessions are tracks you can play in order or on their own, queue, favorite, download, or add to your own playlists, and a mini player follows you around the app.
Fixing the UX of the basics.
At its core, the old app did four things: downloads, favorites, playlists, and playing a whole program or a single session. They all worked in the most basic way, but the flows were clunky, and it wasn’t always clear what a tap would do. My goal was that nothing in the app needed explaining.
So I filled in what a modern audio app has, and made each part behave the way people already expect, since almost everyone knows how those apps work. A new Library holds your favorites, downloads, playlists, and the audiobooks we added. A queue lets you add sessions and swipe away the ones you don’t want, and from the player you can jump to any session’s program, even when you started it from a playlist. If you try to do something, it works the way you’d expect.
Voices and read-along captions.
Shad Helmstetter’s self-talk programs started on cassette tapes in the 1980s, narrated by Shad himself. Other narrators, men and women, recorded later programs, but the old app offered one recording per program and no captions. I rebuilt playback so a session can have several recordings, each with read-along captions, and you choose the voice. Tapping a line jumps the audio there.
A recent batch of programs was only recorded in a female voice Shad had approved, and listeners kept asking for a male one. An AI voice reading the script wasn’t an option: Shad is particular about delivery, and each line is repeated in a few different ways so it lands more than once. So I used ElevenLabs to map a male voice onto her recordings, keeping her timing and delivery.
05Building it
The app, and everything around it.
I ported the app to React Native in the first days, moved it off Firebase onto Supabase within the week, and kept shipping from there, about eight months and 13 releases on my own. Along with the app, I built what runs around it: the web checkout and the book download, analytics in PostHog, and campaign tagging, so every ad and campaign link carries its source through signup into Stripe, and purchases go back to Meta as conversions.
Support was part of the build. An admin tool lets the customer service team look up any subscriber and their plan, set up accounts, and fix an email address everywhere at once, with release notes written for them. Sign-in and password resets now use one-time email codes, which took password reset requests to support from 15 to 20 emails a day to none.
- JAN 2026Rewrite beginsFlutter to React Native, then off Firebase onto Supabase.
- FEBPlayer, voices, captionsFull player, multiple voices, read-along captions, downloads, audiobooks.
- APRNew onboardingThe program finder and a web checkout.
- JUN3.0 on both storesReleased on iOS and Android.
- JULNew plan screenAnnual first in the web checkout.
- AUGPlans and code sign-inThe new plan screen and one-time code sign-in in the apps.
06What happened
