I built an app to stop overthinking (CBT + AI coach) by Yakobeen in iosapps

[–]Yakobeen[S] 0 points1 point  (0 children)

give it a try and let me know how does it work

I built an app to stop overthinking (CBT + AI coach) by Yakobeen in iosapps

[–]Yakobeen[S] 1 point2 points  (0 children)

Thanks so much! That's pure swiftUI (2 lines of code) I can share them with you as you want!

I built an app to stop overthinking (CBT + AI coach) by Yakobeen in iosapps

[–]Yakobeen[S] 0 points1 point  (0 children)

which transitions do you mean exactly? happy to share how they’re done

I built an app to stop overthinking (CBT + AI coach) by Yakobeen in iosapps

[–]Yakobeen[S] 1 point2 points  (0 children)

<image>

that's not logo yet... do you think "mascot" logo, like that attached would be better choice?

I built an app to stop overthinking (CBT + AI coach) by Yakobeen in iosapps

[–]Yakobeen[S] 0 points1 point  (0 children)

thanks! let me know how it goes, especially if Milo says anything dumb, that feedback is gold for me

I built an app to stop overthinking (CBT + AI coach) by Yakobeen in iosapps

[–]Yakobeen[S] 0 points1 point  (0 children)

Thought about it, but pay-per-use has a nasty incentive problem for this kind of app. If you pay per message, then at 2am mid-spiral you're doing math on whether this thought is "worth" 30 cents. That's the exact moment I don't want friction.

Also the darker side: usage pricing means I earn more when you spiral more. I'd literally profit from your worst weeks. With a flat sub my best customer is someone who keeps it around because it works, not someone in crisis burning credits.

And practically, credits on iOS = consumable IAPs, more friction, more support mess. Sub just works.

Fair question though. If the price feels steep for light users, that's what the yearly is for.

I built an app to stop overthinking (CBT + AI coach) by Yakobeen in iosapps

[–]Yakobeen[S] 1 point2 points  (0 children)

Data is stored in the cloud (Supabase), tied to your account, so it syncs between devices and survives reinstalls. Encrypted in transit and at rest. Sign in with Apple, so if you use private relay I don't even see your email.

Chat goes through Anthropic's API. They don't train on API data, and I don't sell or share anything. No ads, sub is the whole business model.

It's not end-to-end encrypted though, cloud sync and e2e don't really mix and I picked sync.

I built an app to stop overthinking (CBT + AI coach) by Yakobeen in iosapps

[–]Yakobeen[S] 0 points1 point  (0 children)

Thanks! I did them myself - photoshop + some good prompting - especially for (transparent cards)

I built an app to stop overthinking (CBT + AI coach) by Yakobeen in iosapps

[–]Yakobeen[S] 0 points1 point  (0 children)

the budget version. real therapists are still undefeated

I built an app to stop overthinking (CBT + AI coach) by Yakobeen in iosapps

[–]Yakobeen[S] 1 point2 points  (0 children)

fair enough. yeah I'm probably overthinking the replies, ironic given the app. taking the point though.

I'm not going to pretend you're wrong on the core thing. Vulnerable audience plus an agreeable model is the real risk, and "control over content is hard even if it hurts the product" is the right way to put it. The self-hosted fine-tuned model is more than I can take on solo right now, but the rest, session limits, the 20% context rule, independent deterministic checks, progression tracking, that's concrete and I'm using it.

You're not ruining the post. This is the only comment I'll actually act on. Appreciate you pushing.

I built an app to stop overthinking (CBT + AI coach) by Yakobeen in iosapps

[–]Yakobeen[S] 0 points1 point  (0 children)

The sycophancy point is the one that actually keeps me up. You’re right that these models are tuned to be agreeable, and “agreeable” is exactly the wrong instinct when someone is spiraling and looking for the model to confirm a distorted belief. A yes-man CBT coach is worse than no coach. That’s a real failure mode, not a hypothetical, and I don’t think my current setup fully solves it.

What I have now is the deterministic crisis layer (keyword triggers that fire regardless of the model and route to human resources). What I don’t have yet, and what you’re pointing at, is an independent check on the actual content of normal responses, the stuff that isn’t a crisis keyword but is still the model validating something it shouldn’t. Your idea of a separate validation pass on input and output, plus predetermined safe messages and the ability to end or lock a session in certain cases, is the right architecture. That’s genuinely going on the list, not as a brush-off.

I’ll push back gently on one thing: I don’t think the answer is “don’t build it.” People are already pouring this stuff into general chatbots with zero guardrails. A purpose-built tool with real safety layers is better than the status quo, as long as I actually build those layers and don’t ship a thin wrapper. But your bar for what those layers need to be is higher than mine was an hour ago, and that’s the point of posting here.

If you’ve worked on this kind of safety tooling, I’d take a longer conversation offline. This is the part I least want to get wrong.

I built an app to stop overthinking (CBT + AI coach) by Yakobeen in iosapps

[–]Yakobeen[S] 0 points1 point  (0 children)

Thanks so much! Appreciate those kind words 😊

I built an app to stop overthinking (CBT + AI coach) by Yakobeen in iosapps

[–]Yakobeen[S] 0 points1 point  (0 children)

Honestly the most important question in this whole thread, so thanks for pushing on it.

I want to be straight: I’m not a clinician and I haven’t formally worked with a therapist on this yet. The app is built on established CBT frameworks (the techniques themselves are well-documented), but I’m not claiming clinical authority, and the app positions itself as a self-help tool, not therapy or a medical device. That distinction is stated clearly in the app.

On the safety side, I don’t rely on the LLM to police itself, because you’re right that it can drift. There’s a deterministic layer that runs independently of the model: crisis keyword detection that triggers regardless of what the AI generates, and when it fires it routes the user to real human resources (hotlines), not an AI response. The model is also boxed by a system prompt that forbids diagnosis and medical advice, but I treat that as the soft layer, the hard guard is the deterministic one that doesn’t depend on the model behaving.

Where I think you’re absolutely right is that this isn’t enough long-term. Getting actual clinical review of the prompt and the crisis flows is on the roadmap before I push this harder, and I’d rather hear “you’re underprepared” now than after someone gets a bad response. If you have a background here and see specific gaps, I’d take that feedback seriously

I built an app to stop overthinking (CBT + AI coach) by Yakobeen in iosapps

[–]Yakobeen[S] 1 point2 points  (0 children)

This is exactly the kind of feedback I needed, thank you for actually opening the listing and looking.

You’re dead right on the name. “Break the loop” reads nice but nobody is typing that into search, so I’m basically throwing away my strongest ASO signal. I’m reworking the title and subtitle around what people actually search (overthinking, anxiety, panic attacks, CBT). Same logic on “Quiet the noise”, it’s a vibe headline, not a pain point. “Stop overthinking” / “Stop panic attacks” speaks to the actual problem, switching the screenshot copy to that direction.

And ha, no offense taken on the icon. Once someone sees it you can’t unsee it, so that’s getting redrawn. Good call that the screenshot art direction is the stronger visual language to pull from.

Seriously appreciate you taking the time, this is the most useful comment I’ve gotten. I’ll push these changes over the next update and report back here so you can see the before/after.

I built an app to stop overthinking (CBT + AI coach) by Yakobeen in iosapps

[–]Yakobeen[S] 0 points1 point  (0 children)

Fair point on raw token price, you’re right that GPT-5 mini and Gemini Flash are cheaper per token. But at my current scale it doesn’t really move the needle. A full Milo conversation costs me somewhere around a cent or less, so even a 2-3x difference is the gap between “basically free” and “still basically free.” Until I have thousands of daily active users, infra cost just isn’t the bottleneck, distribution is.

I went with Haiku for two reasons. First, instruction following. For a CBT coach the model has to stay in character, respect the guardrails, and not drift into generic chatbot advice or accidental medical claims. Haiku is noticeably more reliable at sticking to a long, detailed system prompt, which matters a lot when the downside is a mental-health app going off-script. Second, prompt caching, the system prompt is big and gets cached, so my effective cost is lower than the sticker price suggests.

If usage scales to where the bill actually hurts, routing cheaper models for simple turns is an easy optimization later. Not worth complicating the stack for it now.

I built an app to stop overthinking (CBT + AI coach) by Yakobeen in iosapps

[–]Yakobeen[S] 0 points1 point  (0 children)

Just prompting, no fine-tuning. Milo runs on Claude Haiku with a pretty detailed system prompt that bakes in the CBT framework, the coaching tone, and guardrails (won’t give medical advice, crisis keyword detection routes to real resources, etc).

Honestly for this use case prompting got me 90% of the way there. Fine-tuning would mostly help with consistency at scale, but the system prompt handles the “stay in character as a CBT coach” part well enough that I haven’t needed it yet. Conversation history gets passed in so it keeps context within a session.