The idea

The 3-6-9 method is simple. You pick one intention and write it out 3 times in the morning, 6 times in the afternoon and 9 times at night.

$$3 + 6 + 9 = 18 \text{ lines a day}, \qquad 18 \times 21 = 378 \text{ lines over the classic 21 days}$$

Most people who try it on paper give up by day four. They forget the afternoon session, lose count, or change the wording halfway through. I wanted an app that remembers for you, so all you have to do is show up and write.

What it does

  • Guided sessions. Each session starts with a short breathing exercise (two full breaths, the Done button unlocks after 26 seconds). Then you type your intention line by line, tap CHECK, then GO, and a small burst of confetti marks the end.
  • An AI helper for the wording. If you don't know what to write, the app asks a few questions ("What do you most want to change in your life?", "What usually gets in the way?") and drafts an intention you can keep or edit. You get a few AI rewrites a week, on purpose, so the intention stays stable.
  • Reminders that match the ritual. Morning, midday and night, each with a 30 minute window. Miss the window and the session is marked late rather than silently lost.
  • Streaks with a bit of forgiveness. Two streak freezes a month, and a history calendar that shows which of the three sessions you did each day.
  • Read aloud. The app can read your intention back to you.

Write it 3, 6 and 9 times a day

How I built it

The first version was made in FlutterFlow and went live on the App Store on 11 August 2026. RevenueCat was part of it from day one: the paywall, the pro_monthly and pro_yearly products and the premium entitlement all live in RevenueCat, and the app checks that entitlement on the splash screen to decide where to send you.

In September I exported the code and moved to plain Flutter. FlutterFlow had been fine for getting started, but it got in the way of a few things I needed:

  • a home screen widget written in SwiftUI, which shows either a daily affirmation or, if you switch it on in Settings, your own intention
  • the app itself in 10 languages, which FlutterFlow made very hard to add
  • my own build and upload pipeline, so a new build goes from the terminal to TestFlight without opening an editor

These are in version 2.0, which is built and waiting to go out. An Android version is in internal testing on Google Play, using the same product IDs through RevenueCat, so one entitlement covers both stores.

Other pieces: Firebase, a small server that calls OpenAI for the AI helper and handles read-aloud, Amplitude for product analytics and GA4 for the funnel.

Languages

  • In the app: 10 languages. English, Spanish, Brazilian Portuguese, German, French, Italian, Turkish, Japanese, Korean and Simplified Chinese. The app follows the phone's language.
  • The AI helper follows the app language too. Answer the questions in Japanese and your intention comes back in Japanese, not English. The daily affirmations in the widget are translated as well.
  • On the App Store: 39 localisations. Name, subtitle, description, keywords, five screenshots and a 30 second preview video for each one. Where the app itself isn't translated yet, the screenshots and video still carry captions in that language.

$$10 \text{ app languages}, \quad 39 \text{ store localisations}, \quad 39 \times 5 = 195 \text{ screenshots per device size}$$

Monetisation

The first full session is free, from onboarding right through to the success screen. The paywall only appears after that, once you've actually done the ritual once. Before this change the paywall came straight after onboarding, so people met it before they had seen what the app was for.

Premium is a subscription: £4.99 a month or £39.99 a year (the same in US dollars), set up in RevenueCat with matching products on the App Store and Google Play.

An AI helper for the wording, premium through RevenueCat

What was hard

  • Where to put the paywall. Too early and people never feel the value. Too late and there's no reason to pay. Moving it to just after the first session was the biggest single change I made.
  • Getting out of FlutterFlow. The export didn't build on current Flutter, and a lot of text came out as plain strings with the translation keys missing. Adding languages meant rebuilding that layer by hand.
  • Store assets in 39 languages. I ended up scripting the screenshots and the preview video, so each language gets its own captions without me redoing them by hand.

What I learned

The feature is the easy part. The loop around it (the reminder, the first session, the streak, the reason to come back tomorrow) is what decides whether anyone uses the app. Most of my time went there, not into the AI.

What's next

Ship 2.0 on iOS, launch on Google Play, and use real usage data to see which of the three sessions people drop first, and whether the widget brings them back.

369 Zone. Write it. Repeat it. Become it.

369 Zone is made by Commercium, an independent app studio in London, run by a solo founder: thecommercium.com

Built With

Share this project:

Updates

Submission history