Sunset2024

SubliminalMe

A SwiftUI app that writes personal affirmation programs with AI, lets you record them in your own voice or pick an AI voice, and plays them under a soundtrack. It shipped to the App Store as EmpowerMe in September 2024.

Status
Sunset
Ran 2023 — 2024
Built in
14 months
July 2023 — September 2024
Stack
SwiftUIFirebaseOpenAIElevenLabsRevenueCatNext.js (admin)

01 / 05

Program creation

Choose a program to record in your own voice, or a pre-generated one in an AI voice.

The problem

The bet: affirmations written for your goals land harder in your own voice.

The idea was to make affirmations personal: written around your own goals and spoken in your own voice. The first version’s copy said “Your subconscious may respond stronger to your own voice”, and the landing page promised “Reach your goals one affirmation at a time.”

How it works

Choose a goal, get affirmations written for it, record them, and listen under music.

Onboarding asks about your goals and preferences, lets you pick a voice and recommends programs and soundtracks. To make your own program, you pick a focus and an AI chat writes the affirmations with you. Then you either record them yourself or choose one of six AI voices, and unfinished programs are kept as drafts. The player runs the affirmations under a soundtrack, with a “perception” slider for how loud they sit, plus looping, a sleep timer, lock-screen controls and daily affirmation notifications.

Building it

It’s a SwiftUI app on Firebase: Sign in with Apple, Firestore, Storage, Messaging and Cloud Functions for the AI work. Data lives locally in Core Data, and subscriptions run through RevenueCat. It began in July 2023 as Subliminal and was carried into a new repo in December 2023, which shipped as EmpowerMe in September 2024. Alongside it is a Next.js admin panel for uploading soundtracks, voices and built-in programs in each language.

Lines of Swift
48k
Commits
134
Core Data entities
21
Cloud Functions for AI
4

Under the hood

AI programs and voices

Affirmations are written by OpenAI, including a fine-tuned GPT-3.5 model, through Firebase Cloud Functions that also handle chat, speech and translation. There are six ElevenLabs multilingual voices. The built-in programs are pre-rendered for every voice and stored in Firebase Storage by program, voice and line, so the app downloads finished audio instead of generating it on demand. The admin panel pulls the voice list from ElevenLabs, stores programs per language, and calls a Cloud Function to add a voice to a program.

  • The problem

    The first version called OpenAI directly from the app.

    The fix

    Every AI call moved behind callable Cloud Functions, versioned by name, so no AI keys live in the app.

  • The problem

    A new program didn’t appear in the list until its audio had finished downloading, and drafts with only some lines recorded reopened at the wrong step.

    The fix

    The program is created from its draft straight away, and each draft records the stage it reached so it resumes in the right place.

Audio

Two AVAudioPlayer pipelines run side by side: a soundtrack that fades in over 10 seconds and can loop, and an affirmation queue whose volume follows the perception slider (50% by default), with 1.618 seconds between lines. Audio keeps playing in the background with lock-screen controls. Recording is AAC mono, with an AVAudioEngine FFT drawing a live waveform as you speak.

  • The problem

    Recordings sounded poor.

    The fix

    The recording sample rate went from 12 kHz to 48 kHz, and the recording screen prompts people to switch on iOS Voice Isolation for their mic.

  • The problem

    Playback broke when a call came in or headphones were unplugged.

    The fix

    An audio session manager that handles interruptions and route changes.

Onboarding, downloads and subscriptions

Onboarding ends by downloading the recommended programs and soundtracks. Subscriptions are weekly, monthly or annual through RevenueCat, with the trial length read from the store’s introductory offer. The paywall appears on a timer that pauses while the player is open and waits until after onboarding. Mixpanel and Amplitude track the funnel.

  • The problem

    Onboarding broke if the network dropped during those first downloads.

    The fix

    A network monitor built on NWPathMonitor, cancellable downloads and a retry screen.

  • The problem

    App Review rejected a build because of a leftover Newsstand icon entry in Info.plist.

    The fix

    The entry was removed, and the app was released three days later, on 12 September 2024.

Where it is now

Sunset. Ran 2023 — 2024.

It was released on 12 September 2024 as “EmpowerMe: Subliminals & Hypno”, and version 1.0.2 followed on 13 October 2024. That was its last update, and it’s now sunset, though the listing is still up. A final branch that renamed it Mind+ was never merged. I came back to the idea twice in 2025, with a fresh Swift app in January and a React Native version in April, but neither went past a few days of commits.

App Store release
Sep 2024
AI voices
6
Last version, October 2024
1.0.2

What I learned

[Your words: what shipping a consumer subscription app taught you.]

Ask about SubliminalMe

The site’s assistant has read this case study. Ask it anything, or start with one of these.

Next projectConfexio ›