Adjusts the paywall strategy from withholding toward insight-first:
- Free-tier instructions rewritten around the monetization philosophy:
the goal is not to interrupt the conversation but to build trust. The
free experience should leave the user feeling understood, respected
and curious to continue, and should help the user reach a meaningful
insight of their own. The rule is included verbatim: 'Never
manufacture suspense. Create genuine curiosity by helping the user
reach a meaningful insight, then offer a deeper level of analysis in
Premium.'
- Premium transition sharpened: analysis_ready may only fire when the
conversation has reached a meaningful point and the natural next step
is a complete analysis, structured framework, personalised strategy,
practical exercises or a step-by-step action plan — pausing
immediately before that delivery, never mid-sentence or mid-
explanation. Transition example updated to the new wording. Product
feeling encoded: always 'I genuinely want to continue this
conversation', never 'they stopped me just to make me pay'.
- Pricing: paywall now shows plan prices — localized prices fetched
from the store via react-native-iap, falling back to $5.99/month and
$49.99/year (~30% below monthly) until store config exists — plus
the Premium includes list (unlimited conversations, unlimited
analyses, personalised guidance, future feature updates).
- README: monetization philosophy, product feeling and pricing sections
updated to match.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0118DaxZR36RpnY524vRqx3z
Applies the brand platform consistently across the codebase:
- Name: Semantika everywhere — app name/slug/scheme, bundle ids
(com.semantika.app), workspace package names, CDK stack, Cognito
domain prefix, secret name (semantika/app), database name, product
ids (semantika_monthly/_yearly), and storage keys.
- System instructions: Semantika is positioned as an intelligent
reflection partner — not therapy, not self-help, not a course. It
starts by exploring how the user interprets their situation and
supports reflection and perspective-taking rather than delivering
finished answers. Tone rules added: never judging, dramatic,
overenthusiastic or preaching; always calm, curious, clear,
respectful, structured, thoughtful.
- Honest claims: instructions and knowledge base now explicitly frame
neurosemantics and NLP as models and inspiration for reflection, not
scientifically established methods — including a note that several
NLP claims lack support in controlled studies. Claiming or implying
proven effects is forbidden.
- README: brand section (position, promise, mission, vision,
positioning, tone, design words) and updated product philosophy.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0118DaxZR36RpnY524vRqx3z
Replaces the hardcoded message limit with a model-driven paywall and
removes registration before the first question:
- Onboarding: the app opens directly into the chat. Dynamic conversation
starters are served by GET /suggestions (services/api/suggestions.json),
updatable with a deploy — no app release needed. Guests chat via
POST /guest/chat, identified by an app-generated device id; sign-in
moves to the paywall, where a purchase must attach to an account.
- Free experience: the model runs in discovery mode — follow-up
questions, pattern identification, visible understanding — building an
analysis without delivering the full solution.
- Intelligent paywall: the model returns structured output (reply +
analysis_ready). Only when the problem is described, the information is
sufficient and an action plan is ready does it write a calm transition
and pause the conversation. Manufactured urgency, emotional pressure,
fake readiness and mid-answer stops are explicitly forbidden.
- Premium: on unlock the app resends the transcript and the backend
immediately delivers the full analysis, strategies and exercises, then
the dialogue continues without restriction.
- The old FREE_MESSAGE_LIMIT becomes MESSAGE_CAP (default 200/30 days),
kept purely as an abuse backstop — it is not the paywall.
- WelcomeScreen removed; the app is now two views (Chat, Paywall).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0118DaxZR36RpnY524vRqx3z
Ersätter den tidigare webappen på denna branch med ett fokuserat monorepo:
- apps/mobile: Expo/React Native med tre vyer (Welcome, Chat, Paywall),
Cognito hosted UI-inloggning (Apple/Google/e-post) och In-App
Purchase/Play Billing via en gemensam purchases-modul.
- services/api: en enda Lambda-backend — OpenAI Responses API med
Markdown-kunskapsbas som systeminstruktioner, free tier-gräns i
PostgreSQL (HTTP 402 -> paywall) och kvittoverifiering bakom ett
delat PaymentProvider-interface (Apple/Google, Stripe kan läggas
till för webb senare).
- infra: AWS CDK-stack med API Gateway (JWT-authorizer), Lambda,
Cognito, Aurora Serverless v2 och Secrets Manager.
- db/migrations: minimal datamodell (users + usage), inga
konversationer sparas.
- GitHub Actions: CI (lint, typecheck, test) och deploy från main.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0118DaxZR36RpnY524vRqx3z