Allin — Source of truth

Allin — infrastructure & how it all works

The single reference for every account, service, and piece of logic behind Allin — built for the move onto Allin's own Claude profile. It points to where each credential lives; it never contains the credentials themselves.

Allin Well Ltd · iOS (SwiftUI) + Supabase · v2.2 (build 5) · compiled Aug 2026

🔒 No secrets live in this document. Passwords, API keys, tokens and the service-role key are deliberately absent — this page can be shared, and secrets must not travel in it. Every row below tells you where the real value is stored (Keychain, Supabase project secrets, GitHub Actions secrets, Xcode signing, or your password manager). Treat the password manager as the master list; this is the map, not the keyring.
Overview

What Allin is & the stack at a glance

Allin is an iOS app for nervous-system / somatic "inner work" — a daily emotional check-in matches you to a guided audio "rewire" session, plus a personalised 10-step beliefs plan, an audio library, and a journal.

Client

iOS, SwiftUI. Repo Maelwi/allin-ios → local ~/Documents/allin-gh/allin-ios, branch main. Bundle com.allinwellltd.allin, App Store ID 6754271583, current v2.2 (build 5).

Backend

Supabase project wsxpmcbtcknewpiwudsc (us-east-1). Repo Maelwi/allin-backend. Postgres + Auth (Sign in with Apple) + Storage (audio) + one Edge Function (recommend-plan). Auto-deploys from main via GitHub Actions.

Growth & lifecycle

Segment SDK → Amplitude + Customer.io (EU) + Meta SDK. RevenueCat/StoreKit for subscriptions. Deep links on Cloudflare Pages (link.join-allin.com).

Access

Accounts & logins

Every service and the account it lives under. Ownership matters for the migration — note the mix of marie@join-allin.com, info@join-allin.com, and Isabel's Apple ID. Confirm the ⚠ rows during the move.

ServiceAccount / loginKey identifiersWhere the secret lives
Apple Developer / App Store ConnectAccount holder isabel.lewren@gmail.comAllin Well Ltd · Team 2L65759584 · App ID 6754271583ASC API key .p8 + Xcode signing on the build Mac
GitHubMaelwi (Marie); collaborator isabellewrenRepos allin-ios, allin-backend (both private)gh CLI auth / SSH keys on the Mac; Actions secrets in the repo
SupabaseProject "Maelwi's Project"Ref wsxpmcbtcknewpiwudsc · us-east-1 · ProPersonal Access Token in macOS Keychain; service-role key in Supabase secrets
SegmentWorkspace "Join-Allin-Isabel" · info@join-allin.comSource "Allin iOS"Write key in iOS Info.plist + Supabase secret SEGMENT_WRITE_KEY
Amplitudemarie@join-allin.comProject 835236 · org join-allin-253655 · NA · Free planAPI key in Segment destination (not needed client-side)
Customer.ioinfo@join-allin.comWorkspace 216147 · Site ID 6f711…1664 · EU regionTrack API key in Segment destination; APNs key for push
Meta / Facebook⚠ confirm Business Manager ownerFB App 2131466234361765Client token in iOS Info.plist
RevenueCat⚠ confirm loginSubscriptions (StoreKit)Public SDK key in iOS; secret key in RC dashboard
Cloudflaremarie@join-allin.comPages: allin-links, allin-priorities, allin-onboarding · domain link.join-allin.comwrangler auth on the Mac; API token in Cloudflare
Google Workspacemarie@ / info@join-allin.comEmail domain + Drive (audio masters, Docs/Sheets)Google account passwords (password manager)
Website (Squarespace)Isabeljoin-allin.comSquarespace login (Isabel)
Claude (this work)Migrating m@umancstudio.commarie@join-allin.comArtifacts + connectorsAnthropic account login
The logic

How Allin works today

The core loop and the routing that powers it — verified against the current code.

The daily loop

  1. Check in — emotion, situation, intensity + body, and the belief beneath.
  2. Rewire session — matched guided audio, streamed from Supabase Storage.
  3. Reflect — pre/post mood + a note, saved to the journal.
  4. Return — journal, streak & progress (non-punitive).

Check-in routing (deterministic gates + AI)

Intensity is the gate, emotion is the content, intent is the lane. A crisis scan intercepts early → region-aware support screen (no audio). "Express": intensity ≥ 7 and unpleasant → straight to a soothe audio. known bug gate is 7, should be 8.

Recommender

Tier 1 = Postgres full-text search over the audio library (live). Tier 2 pgvector + Tier 3 shift-rating learning = sketched, not built. The Edge Function's Anthropic path exists but is dormant — the critical path is LLM-free.

10-step beliefs plan

Server-generated from an intake (areas + ratings + 4 free-text fields). Rating = life-area satisfaction (lower → more steps). Stored verbatim as intake_json; each step captures mood + shift_rating + feedback.

Infrastructure

Architecture

iOS app

Key files

Core/AppView (routing), AuthenticationManager (Apple sign-in), SessionManager + SupabaseService (check-ins), BeliefsPlanManager/Service (plan), Onboarding/OnboardingFlow (8 steps), Core/DeepLink, Core/CrisisResources.

SPM

supabase-swift, analytics-swift (Segment), purchases-ios (RevenueCat), facebook-ios-sdk.

Backend / Supabase

Edge function

recommend-plan (Deno/TS) — JWT-auth, deterministic + FTS.

Auto-deploy

GitHub Actions on push to main: migrations → db push, functions → functions deploy, audio metadata → re-seed. ~30–45s.

Storage

Bucket of guided-audio mp3s (public-read); only the onboarding video is bundled in the app.

Deep links

Cloudflare Pages allin-linkslink.join-allin.com. Serves the AASA for universal links; non-iOS falls back (302) to join-allin.com. Paths: /home /checkin /plan /library /audio/* /journal /progress /profile /settings. Entitlement shipped in v2.2.

Push

APNs entitlement (aps-environment: production) + device token → Customer.io. verify APNs .p8 uploaded to CIO + production push confirmed on a prod build.

Data

Data model

Public schema. Everything that keys on a user cascades on delete, so account deletion fully erases the database (verified). Free-text fields marked special-category are mental-health data.

TableHoldsSensitivity
emotional_sessionsCheck-ins: emotion, body, trigger, belief, memory, desired/new belief, reframe, pre/post mood, reflection_notesspecial-category
beliefs_plans10-step plan + full intake (intake_json), llm_reasoningspecial-category
beliefs_plan_stepsPer-step mood, shift_rating, feedback_textspecial-category
user_entitlementssubscription_status, RevenueCat id, consent_granted_at (unused)personal
users / auth.usersAccount id + email (Apple)personal
audio_library · app_config · checkin_configContent + config (no personal data)non-personal

RPCs: delete_user() (cascading erase), search_audio_library(). See the GDPR plan for the pseudonymisation + encryption work on the special-category tables.

Growth

Analytics & lifecycle pipe

iOS (Segment SDK) + backend edge functions → Segment source "Allin iOS" → fan-out. Verified live in code.

DestinationPurposeState
Amplitude (835236)Product analytics, "Allin — Core" dashboardlive · free plan
Customer.io (216147, EU)Email + push lifecyclepipe live, campaigns not composed/firing
Meta SDKAd attribution / conversionslive (since v1.8)
RevenueCatSubscription eventslive

GDPR The pipe initialises at launch, before consent — see the GDPR plan (Phase 2) for gating it.

The paper trail

Docs & wikis we've built

Everything produced for Allin, and where it lives. The four wikis also have durable HTML copies in ~/Documents/allin-wikis/ ready to re-publish from the new profile.

🌿
Priority tracker
Weekly priorities, subcategories, comments. Public: allin-priorities.pages.dev
📓
Knowledge base wiki
What Allin is, tone of voice, brand, team, compliance snapshot. Also exported to ~/Downloads/Allin-Knowledge-Base.pdf.
🔒
GDPR & onboarding plan
21 measures, live-user impact, approve/reject. Draft SQL + DPIA in ~/Documents/allin-gdpr/.
🧭
Onboarding research
6-app teardown + expert consensus + decision log. Public: allin-onboarding.pages.dev
📄
Google Doc & Sheet
Priority narrative + sortable sheet, in the m@umancstudio.com Drive (migrate ownership to join-allin.com).
🧠
Claude memory — allin_* files
infrastructure, backend access, strategy, 10-step plan, recommender, metrics. In ~/.claude/…/memory/ (indexed by allin_index.md).
Claude

Connectors & a caveat

What this Claude environment can reach for Allin — and one important gotcha to fix on the new profile.

ConnectorUse for AllinNote
Supabase (MCP)Read/inspect the prod DB, run SQLprivileged — bypasses the redacted views; the GDPR plan restricts this
Google Drive (MCP)Create/read Docs & SheetsUnder m@umancstudio.com today
Amplitude (MCP)wrong account — authed to the Insights org, cannot see Allin's project. Re-auth to marie@join-allin.com on the new profile.
Cloudflare / wranglerDeploy the public wikis + deep-link redirectsCLI auth under marie@join-allin.com
The move

Migrating to Allin's Claude profile

You're moving this work from m@umancstudio.com to marie@join-allin.com. Here's exactly how each piece travels — and how to "move" a wiki.

How to move a wiki (artifact)

Artifacts are tied to the Claude account that published them — they don't transfer between accounts, and the link stays owned by the old account. So you re-publish, you don't "move":

  1. The HTML for all four wikis is saved in ~/Documents/allin-wikis/ (done).
  2. Sign in to Claude as marie@join-allin.com and open a session with this same folder.
  3. Ask it to publish each file as an artifact → it mints fresh URLs owned by the new account.
  4. Update any cross-links, then retire the old artifact URLs.

Shortcut that needs no migration: the public Cloudflare copies (allin-priorities.pages.dev, allin-onboarding.pages.dev) live on Cloudflare, not Claude — they already work for anyone, on any account. Keep the Cloudflare login and they carry over untouched.

AssetHow it moves
Wikis (artifacts)Re-publish the HTML in ~/Documents/allin-wikis/ from the new profile (above)
Public wiki URLsNo move needed — they're on Cloudflare (marie@join-allin.com)
Google Doc & SheetTransfer ownership from m@umancstudio.com to a join-allin.com account in Drive
Claude memory (allin_*)Local files — copy the memory folder to the machine/profile you'll run the new Claude on
Amplitude MCPRe-authenticate the connector to marie@join-allin.com so it can finally see Allin's project
Code, Supabase, Cloudflare, App StoreNothing to migrate — they're their own accounts; the new Claude just needs the same CLI auth on the machine