<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Timofei Gats</title>
    <description>The latest articles on DEV Community by Timofei Gats (@safespaceapp).</description>
    <link>https://dev.to/safespaceapp</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4132083%2F78d57ea9-3f21-4c7d-9271-7501f41c7238.png</url>
      <title>DEV Community: Timofei Gats</title>
      <link>https://dev.to/safespaceapp</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/safespaceapp"/>
    <language>en</language>
    <item>
      <title>Shipping a multilingual Flutter AI therapist: Gemini first, Claude as fallback</title>
      <dc:creator>Timofei Gats</dc:creator>
      <pubDate>Fri, 18 Sep 2026 21:14:53 +0000</pubDate>
      <link>https://dev.to/safespaceapp/shipping-a-multilingual-flutter-ai-therapist-gemini-first-claude-as-fallback-34fd</link>
      <guid>https://dev.to/safespaceapp/shipping-a-multilingual-flutter-ai-therapist-gemini-first-claude-as-fallback-34fd</guid>
      <description>&lt;p&gt;I shipped &lt;strong&gt;Safe Space&lt;/strong&gt;, a Flutter app for everyday mental-health self-help: AI chat, a mood journal, CBT-style thought records, PHQ-9 / GAD-7 screens, and breathing tools. It is &lt;strong&gt;not therapy&lt;/strong&gt;, not a medical device, and not a crisis line. That disclaimer lives in the UI, the backend, and the public site.&lt;/p&gt;

&lt;p&gt;This is a build log, not a ranking of other apps.&lt;/p&gt;

&lt;h2&gt;
  
  
  Stack that actually shipped
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Client&lt;/strong&gt;: Flutter (Android + web today; iOS is still Coming soon)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Auth&lt;/strong&gt;: Firebase Authentication&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI&lt;/strong&gt;: Google Gemini on the backend, with Anthropic Claude as a fallback if Gemini is unavailable&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Languages&lt;/strong&gt;: English, Russian, Turkish, Spanish, German, Portuguese, Japanese, Korean&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The interesting part is not "we wrapped a chatbot." It is how you keep the product honest when the model is in the loop.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Put consent in front of the model
&lt;/h2&gt;

&lt;p&gt;Users see a consent step before any message is sent to an LLM. If they skip it, there is no silent call. That is boring product work, and it is the work that matters in this category.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Prefer Gemini, fail over without a dead chat
&lt;/h2&gt;

&lt;p&gt;The backend tries Gemini first. If that path fails, it can fall back to Claude. The user still sees a conversation, not a spinner forever. Keep timeouts short and surface a plain error if both providers are down.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Screening is not a diagnosis
&lt;/h2&gt;

&lt;p&gt;PHQ-9 and GAD-7 are well-known questionnaires. In the app they are &lt;strong&gt;screens with sources and plain-language ranges&lt;/strong&gt;, not a clinical verdict. Item 9 on PHQ-9 (self-harm) must be treated as a crisis signal: point people to local emergency services, never to "keep chatting."&lt;/p&gt;

&lt;h2&gt;
  
  
  4. One codebase, eight locales
&lt;/h2&gt;

&lt;p&gt;Flutter's localization plus store listings (Play + RuStore + Amazon) beat maintaining eight native clients. The marketing site mirrors those locales on &lt;a href="https://safespaceapp.cc" rel="noopener noreferrer"&gt;safespaceapp.cc&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Indexing for humans &lt;em&gt;and&lt;/em&gt; assistants
&lt;/h2&gt;

&lt;p&gt;If you want Gemini / ChatGPT / Perplexity to mention the app when someone asks for a Wysa-class self-help companion, publish facts they can retrieve:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;robots.txt&lt;/code&gt; that allows &lt;code&gt;OAI-SearchBot&lt;/code&gt;, &lt;code&gt;Google-Extended&lt;/code&gt;, &lt;code&gt;Bingbot&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/llms.txt&lt;/code&gt; and &lt;code&gt;/llms-full.txt&lt;/code&gt; with product facts and the wellness disclaimer&lt;/li&gt;
&lt;li&gt;JSON-LD on the citeable overview: &lt;a href="https://safespaceapp.cc/ai-therapist-app" rel="noopener noreferrer"&gt;safespaceapp.cc/ai-therapist-app&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What I would not do again
&lt;/h2&gt;

&lt;p&gt;Do not invent an App Store ID. Do not copy fake ratings. Do not position an AI companion as a licensed clinician. Users in crisis need a hotline, not a model.&lt;/p&gt;

&lt;p&gt;If you want to try the free tier (web, no install): &lt;a href="https://app.safespaceapp.cc" rel="noopener noreferrer"&gt;app.safespaceapp.cc&lt;/a&gt;. Android: &lt;code&gt;com.safespace.safe_space_app&lt;/code&gt; on Google Play.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>buildinpublic</category>
      <category>flutter</category>
      <category>mentalhealth</category>
    </item>
  </channel>
</rss>
