learning_ai_common_plat/docs/audits/MOBILE_APP_READINESS_AUDIT.md

42 KiB

Mobile App Readiness Audit — ByteLyst Ecosystem

Date: 2026-03-27 Scope: All 7 products with mobile surfaces (18 app targets total) Auditor: Cascade AI


Executive Summary

The ByteLyst ecosystem has 7 products with mobile app code spanning 18 distinct app targets across iOS, Android, watchOS, macOS, and React Native. The most mature mobile apps are LysnrAI and PeakPulse (iOS). Most Android apps and companion targets (watchOS, macOS) are scaffold-to-functional but not store-ready.

Ecosystem-wide mobile readiness: ~58%


1. Product Readiness Scorecard

# Product iOS Android watchOS macOS RN/Expo Overall Store-Ready?
1 LysnrAI 82% 65% 74% iOS: Near
2 MindLyst 55% 40% 48% No
3 ChronoMind 78% 60% 25% 30% 58% No
4 JarvisJr 72% 55% 25% 30% 52% No
5 NomGap 35% 70% 62% No
6 PeakPulse 85% 20% 65% iOS: Near
7 ByteLyst Auth 50% 45% 15% 40% No
8 NoteLett 45% 45% No
9 FlowMonk 50% 50% No

2. Detailed Per-Product Breakdown

2.1 LysnrAI — Overall: 74%

Stack: Native Swift/SwiftUI (iOS) + Native Kotlin/Compose (Android)

iOS (82%)

Dimension Score Detail
Code completeness 90% 42 Swift files. Full app: auth, dictation, history, settings, calendar, cloud sync, speech routing, voice commands, LLM cleanup
Platform SDK 95% 9 Platform/ wrappers (Keychain, Telemetry, Auth, FeatureFlags, KillSwitch, Blob, License, Biometric, Audit)
Keyboard extension 85% LysnrKeyboard target with KeyboardViewController + VoiceCommands. Azure STT integrated
Tests 60% 5 XCTest files (Audio, KeyboardVoiceCommands, Logger, Telemetry, VoiceCommands)
Build verified YES Compiles via xcodebuild
Store assets 90% Full icon set (all sizes), screenshots (iOS + Android), feature graphic
Entitlements YES App Groups, Keychain sharing
Siri/Intents YES StartDictationIntent

Gaps to 100%:

  • More XCTest coverage (target: 15+ test files)
  • TestFlight distribution pipeline tested end-to-end
  • Privacy manifest (PrivacyInfo.xcprivacy) for App Store
  • Onboarding flow for first launch

Android (65%)

Dimension Score Detail
Code completeness 75% 32 Kotlin files. Full screens: nav, auth, dictation, history, settings. Room DB, Hilt DI, speech routing, sync
Platform SDK 70% kotlin-platform-sdk via includeBuild. Config + PlatformModule wired
Keyboard extension 70% LysnrInputMethodService exists but less mature than iOS
Tests 55% 7 unit tests + 2 e2e instrumented tests
Build verified YES compileDebugKotlin passes
Store assets 80% Android icons + screenshots in assets/store/
Widget YES LysnrWidget (Glance)
Notifications YES LysnrNotificationService (Firebase)

Gaps to 100%:

  • More test coverage (target: 15+ test files)
  • Firebase google-services.json setup
  • Play Store listing metadata (description, categories)
  • Adaptive icon foreground/background verified on device
  • ProGuard/R8 rules for release build
  • Keyboard extension feature parity with iOS

2.2 MindLyst — Overall: 48%

Stack: KMP shared (19 Kotlin files) + SwiftUI (iOS) + Compose (Android)

KMP Shared Module (65%)

Dimension Score Detail
Business logic 70% 9 repositories (Triage, Brain, Memory, Streak, Notification, BrainInsight, Reflection, DailyBrief, ShareCard)
Models 75% Models.kt with Brain, MemoryItem, TriageResult
ViewModels 50% HomeViewModel + TriageViewModel only
API clients 60% OpenAIClient + PlatformApiClient + PlatformSyncManager
DI YES Koin SharedModule
Build verified YES :shared:compileKotlinIosSimulatorArm64 passes

iOS (55%)

Dimension Score Detail
Code completeness 60% 29 Swift files. 4 screens (Home, Capture, BrainDetail, Settings) + Login
Platform SDK 80% 7 Platform/ wrappers (Config, Keychain, Telemetry, Auth, FeatureFlags, KillSwitch, CrashReporter)
Components 40% CaptureOrb + BrainChipAndTriageCard only
Services 50% VoiceCaptureService, AzureSpeechTranscriber, PlatformServiceClient
Tests 15% 1 test file (MindLystBrainTests)
Extensions 20% ShareExtension (stub), Widget (stub)
Store assets 0% No icons, screenshots, or store metadata

Gaps to 100%:

  • 6+ more screens needed (Onboarding, Reflection, DailyBrief, Metrics, BrainPacks, Challenge)
  • Widget and ShareExtension are stubs — need implementation
  • Test coverage (target: 10+ test files)
  • Store assets (icons, screenshots, feature graphic)
  • Xcode project needs manual setup (no XcodeGen project.yml)
  • Navigation needs completion (MainTabView exists but limited tabs)

Android (40%)

Dimension Score Detail
Code completeness 40% 12 Kotlin files. MainActivity + Login + 2 UI components only
Platform SDK 60% Config + PlatformModule (Koin). Auth migrated to BLAuthClient
Screens 15% No dedicated screen files beyond MainActivity composition
Tests 0% No Android test files
Store assets 0% No icons or store metadata

Gaps to 100%:

  • All screens need implementation (Dashboard, Capture, BrainDetail, Settings, etc.)
  • Room database for local persistence
  • Test suite (target: 10+ test files)
  • Store assets
  • Notifications
  • Widget (Glance)

2.3 ChronoMind — Overall: 58%

Stack: Native Swift/SwiftUI (iOS) + Native Kotlin/Compose (Android) + watchOS + macOS

iOS (78%)

Dimension Score Detail
Code completeness 85% 44+ Swift files. Rich feature set: timer engine, cascade, urgency, NL parser, routines, gamification, haptics, location, calendar, sleep, wellness, sharing, reschedule
Platform SDK 80% Cloud/ wrappers (Config, Keychain, Telemetry, Auth, FeatureFlags, KillSwitch, PlatformSync, CloudKit) + Diagnostics/CrashReporter
Tests 75% 8 XCTest files (129 tests): Cascade, Format, TimerEngine, Urgency, Accessibility, Gamification, Reschedule, SharedTimerData
Views 80% Full view hierarchy: Components (5), CreateTimer, Focus, Gamification (5)
LiveActivity YES TimerActivityAttributes for Dynamic Island
Siri YES TimerAppIntents
Widgets YES 3 widgets (NextTimer, TimerList, LockScreen)
Build verified YES xcodebuild passes
Store assets 0% No icons or screenshots

Gaps to 100%:

  • Store assets (icons, screenshots)
  • Privacy manifest
  • Onboarding flow
  • Settings view (exists in Android but not in iOS file list — may be in Views/)

Android (60%)

Dimension Score Detail
Code completeness 65% 29 Kotlin files. Engine, Room DB, Hilt DI, 5 screens (Timeline, Focus, History, Routine, Settings), sync, calendar, notifications
Platform SDK 70% Config + PlatformModule via kotlin-platform-sdk
Tests 20% 1 test file (TimerEngineTest) — 30 tests
Widget YES TimerWidget (Glance)
Services YES ForegroundService, QuickSettingsTile, AlarmManager
Build verified YES compileDebugKotlin passes
Wear OS 10% WearMainActivity stub only
Store assets 0% No icons or screenshots

Gaps to 100%:

  • Test coverage (target: 10+ test files)
  • Store assets
  • Login screen wired to real auth
  • Wear OS companion (stub only)

watchOS (25%)

Dimension Score Detail
Code 25% 4 Swift files (App, ContentView, TimerView, ComplicationProvider)
Functionality 20% Basic timer display. No interaction beyond viewing
Complications 25% ComplicationProvider exists as stub

macOS (30%)

Dimension Score Detail
Code 30% 5 Swift files (App, MenuBarPopover, MacTimerStore, MacSettingsView, Views/)
Functionality 25% Menu bar popover, local timer store. Not wired to main app data

2.4 JarvisJr — Overall: 52%

Stack: Native Swift/SwiftUI (iOS) + Native Kotlin/Compose (Android) + watchOS + macOS

iOS (72%)

Dimension Score Detail
Code completeness 80% 45+ Swift files. Dashboard, Agent builder, Session (live, history, summary), Progress, Store, Settings. Voice engine, memory manager, prompt builder, artifact extractor
Platform SDK 85% 7 Platform/ wrappers (Config, Keychain, Telemetry, Auth, FeatureFlags, KillSwitch, CrashReporter)
Shared/ engine 80% Engine (5), Models (3), Store (3), Voice (3), Cloud, Notifications, Accessibility, AppGroup, Theme
Components 70% 7 components (AgentCard, AddAgent, ProgressRing, SessionRow, ShareCard, StreakBadge, WaveformView)
Tests 10% 1 test file (JarvisJrTests.swift)
Build verified YES xcodebuild passes
Store assets 0% No icons or screenshots

Gaps to 100%:

  • Test coverage (target: 15+ test files — engine, voice, memory, store)
  • Store assets
  • OpenAI Realtime API integration (voice sessions are stub)
  • Privacy manifest
  • Onboarding flow

Android (55%)

Dimension Score Detail
Code completeness 60% 26 Kotlin files. 6 screens, Room DB (Agent + Session), Hilt DI, engine, voice stub, notifications
Platform SDK 60% Config + PlatformModule
Tests 15% 1 test file (ModelsTest) — 30 JUnit5 tests
Build verified YES compileDebugKotlin passes
Wear OS 10% WearMainActivity stub
Store assets 0% No icons or screenshots

Gaps to 100%:

  • Test coverage (target: 10+ test files)
  • Store assets
  • Voice session implementation
  • Widget

watchOS (25%) — QuickSession + Complications stubs (5 files)

macOS (30%) — Menu bar app (4 files), basic agent store + settings


2.5 NomGap — Overall: 62%

Stack: React Native (Expo SDK 55) + watchOS companion (Swift)

React Native / Expo (70%)

Dimension Score Detail
Code completeness 80% 109+ TS/TSX files. Full feature set: fasting timer, body viz (Skia), protocols, coaching, gamification, safety, social, meals, hydration, insights
Screens 85% 5 tabs + onboarding + meal-log. Screens: Fast, Journey, Social, Learn, Profile, Protocol
Lib/engine 90% 20+ pure engine modules (timer, stages, science, safety, gamification, organ-data, molecule-flows, etc.)
API clients 80% 10 API modules (auth, billing, blob, fasting, meal, push, social, config, client, index)
Tests 75% 18 test files, 505 tests
Platform SDK 60% @bytelyst/feature-flag-client, kill-switch-client, platform-client, offline-queue wired
Store assets 50% Expo icon assets (favicon, adaptive icons) but no App/Play Store screenshots
Build verified PARTIAL TypeScript compiles. Expo build not verified end-to-end

Gaps to 100%:

  • EAS Build pipeline (Expo Application Services)
  • App Store / Play Store screenshots
  • Push notifications (expo-notifications wired but not tested with real push)
  • HealthKit integration (hook exists but needs native module)
  • @bytelyst/react-auth wired in app layout
  • Deep linking / universal links
  • Privacy policy / Terms page in app

watchOS Companion (35%)

Dimension Score Detail
Code 40% 9 Swift files: App, ContentView, FastingTimerView, HydrationView, StatsView, WatchSessionManager, ComplicationProvider + 2 Shared
Functionality 30% Views exist but WatchConnectivity not proven end-to-end

iOS Native Extensions (40%)

Dimension Score Detail
Widgets 45% 6 Swift files: LiveActivity, LockScreen, Medium, Timer, WidgetBundle
Siri 30% NomGapShortcuts.swift exists
Integration 20% Expo plugins exist (withAndroidWidget, withWatchApp, withWidgetExtension) but unverified

Gaps to 100%:

  • watchOS ↔ React Native WatchConnectivity bridge
  • Widget data flow from Expo to native WidgetKit
  • Siri Shortcuts wired to Expo
  • Android Glance widget integration (files exist in android-extensions/)

2.6 PeakPulse — Overall: 65%

Stack: Native Swift/SwiftUI (iOS only) + watchOS

iOS (85%)

Dimension Score Detail
Code completeness 90% 45+ Swift files. Full MVVM: 5 ViewModels, 17 Services (Location, Altimeter, Haptics, Motion, SessionRecorder, Persistence, SkiIntelligence, HikerIntelligence, Export, GPXImport, Weather, Safety, Goals, Gamification, LiveActivity, HealthKit, Geocoding)
Platform SDK 90% 8 Platform/ wrappers (Config, Keychain, Telemetry, Auth, FeatureFlags, KillSwitch, CrashReporter, Diagnostics, PlatformSync)
Models 90% 5 model files (ActivitySession SwiftData, TrackPoint, HapticEvent, ActivityType, Units)
Views 85% 8 main views + 17 components
Tests 85% 16 XCTest files — comprehensive coverage of all services
LiveActivity YES Dynamic Island + Lock Screen
Siri YES PeakPulseShortcuts
Widgets YES 3 widgets (RecentSession, Streak, QuickStart)
Build verified YES xcodebuild passes
Onboarding YES OnboardingView (4-page flow)
Store assets 0% No icons or screenshots

Gaps to 100%:

  • Store assets (icons, screenshots, feature graphic)
  • Privacy manifest (HealthKit, Location usage descriptions)
  • TestFlight pipeline
  • No Android app planned (iOS-only product)

watchOS (20%)

Dimension Score Detail
Code 20% 2 Swift files: App + ContentView (minimal stubs)
Functionality 15% Basic shell, no sensor integration

Gaps to 100%:

  • CoreLocation + CMAltimeter on watchOS
  • Workout session with HealthKit
  • iPhone ↔ Watch data sync via WCSession
  • Complications

2.7 ByteLyst Auth — Overall: 40%

Stack: Native Swift/SwiftUI (iOS) + Kotlin/Compose (Android) + watchOS + App Clip

iOS (50%)

Dimension Score Detail
Code completeness 55% 14 Swift files. 7 screens: Dashboard, Approvals, TOTP, Devices, MFA Settings, QR Scan, Settings
Platform SDK 30% No Platform/ wrapper directory — relies directly on BLAuthClient/BLAuthUI from SDK
Tests 0% No test files
Widgets 30% TotpWidget.swift exists
App Clip 20% ByteLystAuthClipApp.swift stub
Build verified NO Depends on ByteLystPlatformSDK (SPM local path) — not independently verified
Store assets 0% None

Android (45%)

Dimension Score Detail
Code completeness 50% 17 Kotlin files. Tabs: Dashboard, Codes, Approvals, Devices, Settings, QR Scan. MFA settings, notifications
Platform SDK 40% AppConfig exists but no kotlin-platform-sdk includeBuild
TOTP YES TotpGenerator.kt
Widget 30% TotpGlanceWidget.kt
Tests 0% No test files
Build verified NO Depends on kotlin-platform-sdk includeBuild — not independently verified
Store assets 0% None

watchOS (15%)

Dimension Score Detail
Code 15% 2 files: App + ContentView
Push MFA 0% Designed for push approve/deny but not implemented

Gaps to 100%:

  • Both platforms: test suites (0 tests currently)
  • Both platforms: store assets
  • iOS: BLAuthUI integration (screens reference it but SDK not verified)
  • Android: kotlin-platform-sdk wiring
  • watchOS: push MFA approve/deny
  • App Clip: QR code scanning implementation
  • TOTP widget data flow (Keychain → WidgetKit / Glance)
  • Depends on SmartAuth Phase 2+ backend features (many not built yet)

2.8 NoteLett — Overall: 45%

Stack: React Native (Expo) + TypeScript

Dimension Score Detail
Screens 55% 4-tab navigator (Home, Inbox, Capture, Search) + Auth + Note detail. 9 screen files
API clients 70% 6 API files (auth, client, config, notes, workspaces, note-agent-actions)
Stores 65% 5 Zustand stores (auth, inbox, notes, workspace, mmkv-storage)
Platform SDK 60% platform.ts wired (telemetry, flags, kill-switch, blob)
Tests 50% 4 test files (auth-store, inbox-store, notes-store, workspace-store) — 23 tests
Theme 40% colors.ts + index.ts but limited token coverage
Offline 40% offline-queue.ts exists
Build verified PARTIAL TypeScript compiles
Store assets 0% None

Gaps to 100%:

  • More screens (Settings, Workspaces list, Saved views, Reviews)
  • Rich text editor for notes
  • Push notifications
  • Offline sync with conflict resolution
  • EAS Build pipeline
  • Store assets
  • Deep linking

2.9 FlowMonk — Overall: 50%

Stack: React Native (Expo) + TypeScript

Dimension Score Detail
Screens 65% 9 screens: Dashboard, Capture, Schedule, Tasks, Flows, Urgent, Recommendations, Login, Layout
API client 60% api.ts (typed fetch), types.ts, product-config.ts, clients.ts
Offline 50% offline-sync.ts + storage.ts
Tests 40% 5 test files (api, offline-sync, 3 screen tests)
Platform SDK 50% clients.ts references @bytelyst/* but limited integration
Build verified PARTIAL TypeScript compiles
Store assets 0% None

Gaps to 100%:

  • Zustand stores (currently no state management layer)
  • Settings screen
  • Push notifications
  • EAS Build pipeline
  • Store assets
  • More test coverage
  • Theme tokens (no design system integration)

3. Cross-Cutting Gap Analysis

3.1 Store Readiness

Product iOS Icons Android Icons Screenshots Store Metadata Privacy Policy
LysnrAI YES YES YES Partial YES (web)
MindLyst NO NO NO NO NO
ChronoMind NO NO NO NO YES (web)
JarvisJr NO NO NO NO YES (web)
NomGap Expo only Expo only NO NO NO
PeakPulse NO N/A NO NO NO
Auth App NO NO NO NO NO
NoteLett NO N/A NO NO NO
FlowMonk NO N/A NO NO NO

Only LysnrAI has store assets. All other products need icon generation + screenshots.

3.2 Platform SDK Integration

Product iOS SDK Wrappers Android SDK (kotlin) React Native SDK
LysnrAI 9/13 (95%) Via PlatformModule (70%) N/A
MindLyst 7/13 (80%) Via PlatformModule (60%) N/A
ChronoMind 8/13 (80%) Via PlatformModule (70%) N/A
JarvisJr 7/13 (85%) Via PlatformModule (60%) N/A
NomGap N/A N/A 4/8 TS pkgs (60%)
PeakPulse 8/13 (90%) N/A N/A
Auth App 0/13 (30%*) 0 (40%*) N/A
NoteLett N/A N/A 4/8 TS pkgs (60%)
FlowMonk N/A N/A 3/8 TS pkgs (50%)

*Auth App uses BLAuthClient/BLAuthUI directly, not thin wrappers

3.3 Test Coverage

Product iOS Tests Android Tests RN/Expo Tests Total Mobile Tests
LysnrAI 5 files 7 files + 2 e2e N/A ~14
MindLyst 1 file 0 files N/A 1
ChronoMind 8 files (129) 1 file (30) N/A 159
JarvisJr 1 file 1 file (30) N/A ~35
NomGap N/A N/A 18 files (505) 505
PeakPulse 16 files N/A N/A ~80+
Auth App 0 files 0 files N/A 0
NoteLett N/A N/A 4 files (23) 23
FlowMonk N/A N/A 5 files ~15

3.4 Build Verification Status

Product iOS Build Android Build RN Build Watch Build Mac Build
LysnrAI YES YES N/A N/A N/A
MindLyst YES (KMP) YES (APK) N/A N/A N/A
ChronoMind YES YES N/A Untested Untested
JarvisJr YES YES N/A Untested Untested
NomGap N/A N/A Partial Untested N/A
PeakPulse YES N/A N/A Untested N/A
Auth App Untested Untested N/A Untested N/A
NoteLett N/A N/A Partial N/A N/A
FlowMonk N/A N/A Partial N/A N/A

4. Priority Action Plan — Path to 100%

Tier 1: Nearest to Store-Ready (2-3 weeks each)

# Action Product Impact
1 Generate store assets (icons + screenshots) PeakPulse iOS 85% → 95%
2 Privacy manifest + TestFlight pipeline PeakPulse iOS 95% → 100%
3 Add onboarding flow + privacy manifest LysnrAI iOS 82% → 92%
4 TestFlight pipeline LysnrAI iOS 92% → 100%
5 Firebase setup + store listing LysnrAI Android 65% → 80%

Tier 2: Get to Beta-Quality (4-6 weeks each)

# Action Product Impact
6 Store assets + test coverage + settings view ChronoMind iOS 78% → 90%
7 Test coverage + store assets ChronoMind Android 60% → 75%
8 Test coverage + voice integration + store assets JarvisJr iOS 72% → 85%
9 EAS Build pipeline + store assets NomGap RN 70% → 85%

Tier 3: Scaffold → Functional (6-10 weeks each)

# Action Product Impact
10 Complete 6 missing screens + tests + store assets MindLyst iOS 55% → 75%
11 All screens from scratch + Room DB + tests MindLyst Android 40% → 65%
12 Remaining screens + state management + tests FlowMonk RN 50% → 70%
13 More screens + editor + tests NoteLett RN 45% → 65%

Tier 4: Depends on Backend (10+ weeks)

# Action Product Impact
14 SmartAuth Phase 2+ backend, then app screens Auth App iOS 50% → 75%
15 SmartAuth Phase 2+ backend, then app screens Auth App Android 45% → 70%

Tier 5: Companion Targets (Low Priority)

# Action Product Impact
16 watchOS timer display + complications ChronoMind Watch 25% → 60%
17 watchOS quick session + complications JarvisJr Watch 25% → 60%
18 watchOS sensor integration PeakPulse Watch 20% → 60%
19 macOS menu bar data wiring ChronoMind Mac 30% → 60%
20 macOS menu bar data wiring JarvisJr Mac 30% → 60%
21 watchOS ↔ RN bridge NomGap Watch 35% → 60%
22 watchOS push MFA Auth Watch 15% → 50%
23 Android Glance widget integration NomGap Android ext 30% → 60%

5. Effort Estimates

Effort Level Description Items
S (1-2 days) Store asset generation, privacy manifest #1, #2, #3
M (3-5 days) TestFlight pipeline, Firebase setup, onboarding #4, #5, #6
L (1-2 weeks) Test suites, screen implementations, EAS Build #7, #8, #9, #12, #13
XL (3-4 weeks) Full screen buildout, state management, tests #10, #11, #14, #15
Ongoing Companion targets, feature parity #16-#23

6. Recommendations

  1. Focus on PeakPulse iOS and LysnrAI iOS first — they're 85% and 82% respectively, closest to App Store submission. Generating store assets and adding privacy manifests gets them to 95%+.

  2. Run /generate-store-assets workflow for all products — this is the single biggest gap across the ecosystem (only LysnrAI has assets).

  3. Android apps need test investment — most have 0-1 test files. ChronoMind Android is the most feature-complete Android app and should be the first to get comprehensive tests.

  4. ByteLyst Auth App is blocked on SmartAuth backend (Phase 2+ features not built). Don't invest in the auth app until platform-service auth module has TOTP, device management, and push MFA endpoints.

  5. React Native apps (NomGap, FlowMonk, NoteLett) need EAS Build pipeline — none have been verified with actual device builds through Expo Application Services.

  6. Companion targets (watchOS, macOS, Wear OS) are all stubs — deprioritize until primary platforms are store-ready.