Private wellness intelligence that turns your patterns into a clear plan for today.
PrepAI is an iPhone-first wellness app for people who have health data but still do not know what to do today. It combines Apple Health, manual records, goals, and a brief check-in with a deterministic Rust engine to produce explainable movement, meal, recovery, and preparation guidance. The core experience requires no account, keeps health processing on device, works without a model, and never pretends to diagnose or replace care.
The release wedge is deliberately narrow: open the app, understand what matters, take one useful action, and return with better context tomorrow. Optional on-device AI can improve reviewed wording; it never owns scores, factors, actions, provenance, safety limitations, purchases, writes, or sharing.
- Today Guidance: readiness band, confidence, strongest factors, source dates, personal baselines, and a practical movement/recovery plan.
- Flexible Meals: one useful meal action plus an optional seven-day plan, shopping list, and prep schedule. Reviewed deterministic templates remain available without a model.
- Clinician Prep: a local PDF or text summary of recorded trends, coverage, notes, limitations, and questions to discuss.
- Progress and sample mode: personal guidance history plus a clearly labeled, read-only sample profile that never contaminates personal history.
- PrepAI Plus: a one-time lifetime purchase through RevenueCat. The optional seven-day local trial never charges automatically.
- Local-first reliability: Apple Health, SQLite, backup/import, offline fallbacks, and consent-gated health-free diagnostics.
PrepAI summarizes recorded wellness patterns and helps users prepare better questions for care. It does not diagnose, treat, prescribe, provide emergency advice or injury clearance, or replace a clinician.
Status is generated from docs/shipaton/roadmap.json. As of 2026-08-09, canonical release shipaton-2026-ios-mvp, verified starting-point commit 61ca480. The launch target is 2026-08-16; the Shipaton deadline is September 30, 2026 at 11:45 p.m. PDT.
Evidence is cumulative and never inferred upward:
| Level | Meaning |
|---|---|
| R0 | Requirement only |
| R1 | Source present |
| R2 | Automated checks pass |
| R3 | Manual or physical-device evidence |
| R4 | Signed distributable artifact |
| R5 | Store-processed build |
| R6 | Publicly available |
| Capability | Evidence | Current truth |
|---|---|---|
| Today Guidance | R2 | Deterministic readiness, factors, provenance, confidence, and practical daily actions are implemented and automatically checked. |
| Movement and meal planning | R2 | Movement adaptation, meal actions, seven-day plans, shopping lists, and deterministic fallbacks are implemented. |
| Clinician Prep | R2 | Local PDF/text summaries with limitations and questions are implemented. |
| Apple Health and sample mode | R2 | Apple Health ingestion and an isolated read-only sample experience are implemented; device permission evidence remains open. |
| Lifetime Plus and local trial | R2 | RevenueCat lifetime entitlement and a non-renewing seven-day local trial are implemented and configured. |
| Backup and opt-in diagnostics | R2 | Transactional local backup and consent-gated, health-free diagnostics are implemented. |
| Store-processed iOS candidate | R5 | EAS build 219 is the signed App Store artifact from commit 3435b14; App Store Connect processed it as VALID and it is in internal beta testing. |
| Automated delivery controls | R2 | GitHub Actions is enabled, protected main requires CI (Fast), PR 25 merged through the required gate, Cloudflare production deployed merge 61ca480 after CI, and staging telemetry passed migration, deployment-SHA, hidden-route, and authenticated-canary checks. |
| Store-processed build 212 | R5 | App Store Connect processed build 212 as VALID on August 8; it is preserved as historical evidence. |
| Capability | Evidence | Current truth |
|---|---|---|
| Public US App Store release | R0 | The public App Store URL returns 404; release and IAP approval are not complete. |
| Real purchase and restore | R2 | Source and automated checks exist; production/sandbox device purchase, restore, refund, and revocation evidence is open. |
| Physical-device release matrix | R2 | Cold launch, HealthKit, accessibility, offline, low-storage, model lifecycle, and unfamiliar-user gates need dated device evidence. |
| Final Shipaton assets | R1 | The editable PrepAI Devpost draft exists at https://devpost.com/software/prepai-ngaocs with the verified 1024x1024 icon; final screenshots, device demo, public-store URL, judge access, and signed-out link verification remain open. |
| Production TelemetryEnvelopeV2 | R2 | Source, contract tests, isolated staging resources, live staging SHA, hidden routes, and canary pass. Production approval remains intentionally open until a V2 client binary and Cloudflare Access team/audience configuration exist. |
| Capability | Evidence | Current truth |
|---|---|---|
| Android and Health Connect | R1 | Source is retained but the Shipaton release manifest disables Android. |
| watchOS | R1 | Research and source are retained; watch delivery is disabled for this release. |
| Food vision, supplements, labs, and symptom inference | R1 | Source and requirements remain preserved behind release guards pending separate safety and delivery gates. |
| RAG, tool agents, speculative decoding, and fine-tuning | R0 | PocketSage research inputs are intentionally deferred until after Shipaton. |
| Build | Version | Source | Evidence | Status | Source commit |
|---|---|---|---|---|---|
| 212 | 1.0.0 | App Store Connect | R5 | VALID | not recorded |
| 213 | 1.0.0 | local archive | R4 | signed, not uploaded | 3435b14 |
| 219 | 1.0.0 | EAS production | R5 | VALID, internal beta testing | 3435b14 |
A signed build is not a public release. The App Store URL is not considered live until it is independently verified as R6.
Status: in progress
Features
- Consolidated documentation dashboard with evidence levels
- First-party telemetry deployment corrected without exposing reads
- Build 219 recorded as the v1.0 signed candidate
Release deliverables
- Generate README status and roadmap from this file
- Append build 219 and telemetry deployment evidence without rewriting builds 212/213
- Enable Actions and protect main with CI (Fast)
- Repair Cloudflare Pages and EAS workflow triggers
- Create an editable, truthful Devpost entry
Customer and growth work
- Start the three-post weekly BuildInPublic cadence: product decision, technical proof, tester learning
- Prepare one public acquisition-channel taxonomy without identity or tracking tokens
Expected tests
- Documentation, roadmap, release-manifest, platform, monetization, build, and disabled-feature alignment
- Telemetry source/live deployment SHA, 404 routes, exact acceptance/rejection, and storage visibility
- Responsive website smoke: one phone, menu close paths, links, legal pages, and overflow
- Build 219 version, commit, artifact, entitlement, and native configuration
Exit gate
- Hosted Actions execute
- Web production follows CI (Fast)
- Telemetry no longer drops accepted events or exposes reads
- Build 219 is uploaded or a dated blocker is recorded
- README matches evidence
Evidence and detail: README.md, docs/shipaton/release-evidence.md, docs/shipaton/devpost-draft.md, src/content/release-manifest.json, .github/workflows/ci.yml, .eas/workflows/maestro-e2e.yml.
Status: planned
Features
- Stable existing MVP: Today, movement, meals, Clinician Prep, sample, Apple Health, lifetime Plus, local trial, backup, and aligned light/dark themes
- First arrival offers immediate sample value without account, payment, diagnostics, Health permission, or model download
- TelemetryEnvelopeV2 and protected internal measurement surface
Release deliverables
- Approve IAP metadata and complete final screenshots
- Verify privacy, support, terms, store, website, and in-app copy parity
- Complete production purchase and restore
- Point the website CTA to the public App Store listing
- Release publicly in the United States by August 16
Customer and growth work
- Run a two-minute unfamiliar-user rehearsal
- Publish launch promise, technical privacy proof, and first tester learning
Expected tests
- 20 consecutive physical-iPhone cold launches and 10 background/foreground cycles
- HealthKit full, partial, denied, revoked, and sample/personal isolation
- Purchase, restore, reinstall, offline entitlement, local-trial expiry, refund/revocation, and localized price
- VoiceOver, accessibility text sizes, Reduce Motion, contrast, 44-point targets, and chart summaries
- Airplane mode, low storage, interrupted model download, backup round trip, privacy proxy, and first-party request inspection
- Full iOS Maestro suite and all automated release gates
Exit gate
- R6 public US App Store listing
- Approved lifetime IAP
- Successful real purchase and restore
- Working website CTA
- Secure telemetry
- No P0 or P1 defects
Evidence and detail: docs/shipaton/release-evidence.md, MVP_RELEASE_CHECKLIST.md, docs/frd/production-readiness.md, docs/frd/stability-performance-telemetry.md.
Status: planned
Features
- Highest-impact first-run, copy, navigation, and accessibility fixes from observation
- Structured useful/not-useful signal with reviewed reason enums
- Support-email path for optional user-authored free text; free text never enters telemetry
- Activation scorecard by build and public channel
Release deliverables
- Run at least 15 uncoached fresh-install sessions across sample and personal routes
- Document the baseline, main blocker, decision, and resulting release
- Test one acquisition message at a time across campaign links, website, direct outreach, and BuildInPublic
Customer and growth work
- Identify the strongest acquisition message using qualified activations, not clicks alone
- Record consented-subset and estimate labels on every scorecard metric
Expected tests
- Onboarding interruption, restart, and migration at every step
- Sample route succeeds 15/15 without coaching and personal route at least 13/15
- Personal time-to-value p50 is 90 seconds or less
- Telemetry unknown, declined, consented, revoked, and corrupt-storage states with zero pre-consent requests
- Feedback allowlist and support-email privacy handling
Exit gate
- Activation baseline is dated
- Main comprehension blocker is fixed
- Strongest acquisition message has reproducible evidence
Evidence and detail: docs/prd/prepai-first-run-activation-prd.md, docs/prd/prepai-growth-launch-retention-prd.md, docs/shipaton/build-in-public-log.md.
Status: planned
Features
- WeeklyReviewV1 with coverage, meaningful changes, completed/adapted actions, limitations, provenance, and one manageable adjustment
- Sufficient-history gate and strict sample/personal isolation
- Accessible text summary for each visual
- Contextual local reminder only after demonstrated value and explicit permission
Release deliverables
- Publish the retention hypothesis, observed tester result, and product change
- Begin D1/D7 milestone measurement without persistent identifiers
Customer and growth work
- Interview users about the concrete reason they would return next week
- Use the weekly review as the sole retention hypothesis for this cycle
Expected tests
- Seven-day thresholds, sparse/stale history, missing domains, timezone/DST, week boundaries, and migration
- Sample/personal separation and local-only persistence
- Notification denied, rescheduled, cancelled, and reinstall behavior
- VoiceOver summaries, offline rendering, and deterministic-copy safety review
Exit gate
- Users can name a concrete reason to return
- D1/D7 milestone data begins accumulating without linkable identities
Evidence and detail: docs/prd/prepai-growth-launch-retention-prd.md, docs/requirements/functional-requirements.md.
Status: planned
Features
- Four guided questions: why intensity, what changed, how to adapt, and missing data
- Answers grounded only in the validated deterministic guidance packet
- Optional on-device wording cannot alter canonical facts, actions, limitations, or provenance
- Deterministic complete fallback for unsupported, absent, declined, interrupted, invalid, or slow model states
- Visible support, size, integrity, progress, pause/resume/cancel/delete, and failure states
Release deliverables
- Expose the explainer as a contextual Plus outcome while keeping free/trial and judge access useful
- Apply the September 4 kill rule if safety, memory, or latency gates fail
Customer and growth work
- Test whether explanation clarity—not novelty—increases useful-action completion
- Demonstrate deterministic ownership as the technical differentiator
Expected tests
- Golden deterministic responses and runtime schema validation
- Property tests proving model wording cannot change canonical facts or introduce provenance
- Diagnosis, treatment, injury-clearance, emergency, and overconfidence safety corpus
- Single-flight, cancellation, timeout, corruption, low-storage, offline, and fallback paths
- Loaded-model first-token p95 under 5 seconds, completion under 20 seconds, and 10 sequential generations without jetsam on the oldest supported device
Exit gate
- All safety invariants pass
- Physical-device memory and latency pass, or generative mode remains disabled and deterministic guided explanations ship
Evidence and detail: docs/frd/local_ai_health_context_engine_spec.md, docs/frd/ai-model-fallback-resilience.md, docs/frd/bugfix-background-model-downloads.md.
Status: planned
Features
- Preview-first Today-plan and shopping-list artifacts
- Allowlisted general action, optional user-selected non-sensitive intent, PrepAI branding, and public App Store URL
- Static recipient page with sample result, promise, privacy boundary, and store CTA
- Restrained App Store review request after repeated successful use
Release deliverables
- Begin small creator/community tests with a reproducible 30-second workflow and disclosure-safe media kit
- Never request a review after negative feedback, an error, purchase, or first session
Customer and growth work
- Evaluate qualified users/testers from at least two channels
- Share only through explicit preview and system share confirmation
Expected tests
- Allowlist/property tests excluding health values, readiness, dates, identity, entitlement, and tracking tokens
- Preview-versus-generated artifact snapshots
- Share cancellation creates no network request or repeated prompt
- Recipient page, deep link, offline, text scaling, VoiceOver, and theme regressions
- Review prompt frequency, version, and negative-feedback suppression
Exit gate
- At least two channels produce qualified users or testers
- Sharing privacy inspection finds zero sensitive-field defects
Evidence and detail: docs/prd/prepai-growth-launch-retention-prd.md, src/content/release-manifest.json.
Status: planned
Features
- Only high-impact activation, retention, purchase, support, crash, performance, and accessibility fixes
- Plus page refined around the best-evidenced outcome with pay-once, no automatic charge, restore, free-core, and trial terms explicit
Release deliverables
- Freeze native dependencies, database schema, release claims, and core navigation on September 20
- Complete production performance evidence, scorecard, category proof, screenshots, and creator/store assets
- Concentrate acquisition on the two best demonstrated channels
Customer and growth work
- Targets—not achieved claims: 100 public installs, 15 structured sessions, 20 non-founder lifetime purchases or comparable verified revenue
- Target measurable weekly improvement and three substantive BuildInPublic posts per week
Expected tests
- Full physical-device, accessibility, privacy, offline, purchase/restore/revocation, backup, and performance matrices
- Crash-free launch and telemetry canary by build
- Claim parity across store, website, README, and Devpost
- Fresh-install regression and two-minute unfamiliar-reviewer test
- Zero open P0/P1 defects
Exit gate
- Native and claim freeze is active
- Zero P0/P1 defects
- All traction and revenue claims are dated and reproducible
Evidence and detail: MVP_RELEASE_CHECKLIST.md, docs/shipaton/release-evidence.md, docs/shipaton/assets-manifest.json.
Status: planned
Features
- No net-new product scope
Release deliverables
- Record a 1:55 demo from the public distributed build
- Capture final unframed 1179x2556 screenshots and 1024x1024 icon provenance
- Finalize Devpost copy, technical proof, traction definitions, post-launch growth story, BuildInPublic archive, and categories
- Submit the final editable Devpost entry by September 27
Customer and growth work
- Primary category: Yoga & Fitness Influencer Award
- Cross-cutting categories: RevenueCat Design, Peace Prize, #BuildInPublic, and Grand Prize
- Submit HAMM only with verified production purchase/restore and credible conversion evidence
Expected tests
- All public App Store, website, video, repository, privacy, support, and evidence links work signed out
- Trial or judge access unlocks demonstrated premium behavior
- First 15 seconds identify user/problem/product; core value before 60 seconds; category proof before 1:55
- Every claim maps to the public build and archived evidence
- Two unfamiliar reviewers understand the submission using only video, screenshots, and text
Exit gate
- Final entry is submitted by September 27
- All claims and assets reproduce the distributed build
- Judge access works
Evidence and detail: docs/shipaton/devpost-draft.md, docs/shipaton/video-runbook.md, docs/shipaton/assets-manifest.json, docs/shipaton/build-in-public-log.md.
Status: planned
Features
- No planned feature development
Release deliverables
- Monitor store, RevenueCat, telemetry, website, video, Devpost, and judge access
- Recheck rules 48 and 12 hours before the deadline
- Permit only P0 fixes, low-risk copy, broken-link, or administrative corrections
- Preserve the last-known-good binary, site, worker, video, and Devpost copy for rollback
Customer and growth work
- No new campaign experiments; preserve reliable acquisition and support paths
Expected tests
- Signed-out link sweep
- Public US app and approved IAP availability
- RevenueCat and judge access
- Worker health/schema and website deployment
- Final claim and metric reproduction
Exit gate
- Submission is complete before September 30 at 11:45 p.m. PDT
- Public app and IAP remain available
- All links and judge access work
- No P0/P1 defect remains
- Every metric and claim is dated and reproducible
Evidence and detail: docs/shipaton/release-evidence.md, docs/shipaton/devpost-draft.md.
The operating loop is ship → acquire customers → measure → iterate. Each weekly release has one customer problem, one bounded hypothesis, explicit automated and physical tests, and an exit gate. A release that misses its gate waits; calendar pressure never turns incomplete evidence into a claim.
- Monday: choose one customer problem and publish the hypothesis.
- Tuesday–Wednesday: implement behind pure contracts and add automated evidence.
- Thursday: run physical-device and unfamiliar-user verification.
- Friday: release only if the exit gate passes.
- Weekend: run customer sessions, review the private scorecard, and decide the next smallest high-impact change.
P0/P1 defects, medical overclaiming, privacy regressions, purchase/restore failures, broken accessibility, or failed deterministic fallbacks block release. Native dependencies, the database schema, core navigation, and public claims freeze on September 20. Emergency OTA updates are JS-only, reviewed behavior only, and receive the same test/approval/evidence treatment as a binary.
Apple Health / local SQLite / read-only sample fixture
|
versioned HealthSnapshot
|
Rust deterministic Daily Guidance engine
|
validated factors, actions, and safety copy
|
React Native Today / Move / Meals / Progress / Export
- Expo SDK 57 and React Native 0.86
- TypeScript with runtime validation at native and model boundaries
- SQLite with versioned migrations and transactional backup import
- Rust static library exposed through a C FFI and Swift Expo module
- Optional ExecuTorch narrative and meal generation with consent, storage/network checks, cancellation, and deterministic fallback
- RevenueCat non-consumable lifetime entitlement
The product follows explicit capability states and confirmation-by-default for side effects. Purchases, Health writes, exports, imports, model deletion, and external sharing require a user action with preview or confirmation; unknown side effects fail closed. Model support, size, integrity, progress, pause/resume/cancel/delete, and fallback state remain visible rather than implicit.
HealthKit values, readiness, goals, check-ins, dietary choices, free text, prompts, generated content, photos, exact routes, advertising identifiers, persistent install/session identifiers, IP addresses, and RevenueCat customer identifiers are not product analytics. No account is required.
After explicit opt-in, PrepAI may send only versioned, enumerated operational events with release/build, OS major, coarse device tier, public acquisition channel, feature surface, reviewed result/error enum, and duration bucket. D1/D7/D30 milestones are computed locally and sent as unlinkable aggregate milestones. App Store Connect remains authoritative for downloads; RevenueCat remains authoritative for transactions.
Background app networking is limited to purchase/restore, optional model downloads, app delivery, and consented first-party diagnostics. User-composed support mail and OS sharing are separate explicit side effects: the user previews/confirms them, and PrepAI adds neither an automatic health payload nor hidden tracking. The canonical feature and claim contract is src/content/release-manifest.json.
bun install
bun run dev
bun run verify:docs
bun run roadmap:check
bun run typecheck
bun run test -- --runInBand
bun run verify:shipatonBuild the checked-in iOS Rust archive with:
./scripts/build-rust-ios.shThe release archive hash, target, crate version, and required native symbols are verified in CI.
Useful release commands:
bun run export:web
bun run test:web
bun run test:telemetry
bun run verify:shipaton:fast
bun run verify:shipaton:final # requires external credentials/evidence- CI (Fast): every pull request and
mainpush; roadmap/docs, TypeScript, lint, Jest, Rust fmt/clippy/tests/artifact, release surface, native/store configuration, Expo Doctor, Knip, telemetry contracts, and workflow validation. - CI (Full): a
release-candidatelabel or manual dispatch; production iOS/web exports, performance and bundle evidence, final release guards, and uploaded artifacts. - Web: same-repository pull requests receive previews; production follows successful
CI (Fast)onmain; desktop/mobile smoke covers the single phone demo, menu dismissal, legal/support links, CTAs, and horizontal overflow. - Diagnostics: contract tests and Wrangler dry-run on pull requests; staging D1 verification precedes approved production deploy;
/healthzproves schema/deployment only. - Native: official EAS build, Maestro, approval, and TestFlight jobs retain visible state and emit version/build/commit/fingerprint evidence.
Automated scorecards and BuildInPublic drafts remain private until a person reviews them. No workflow auto-posts health claims, customer quotes, metrics, or social content.
The primary category is Yoga & Fitness Influencer Award. RevenueCat Design, Peace Prize, #BuildInPublic, and the Grand Prize are supported by the same product and post-launch evidence. HAMM is conditional on verified production purchase/restore and credible conversion evidence. PrepAI will not add ads, OneSignal, Layers, Android/Galaxy, a nutrition repositioning, or sponsor SDKs merely to chase unrelated categories.
Targets such as 100 public installs, 15 structured sessions, 20 non-founder lifetime purchases or equivalent verified revenue, week-over-week improvement, and three substantive BuildInPublic posts per week are targets—not achieved traction claims.
The consolidated authority and complete preserved 2-PRD/61-FRD registry begin at docs/README.md. No useful requirement, audit, build record, or conflict note is replaced by this dashboard.
- Product requirements:
docs/requirements/product-requirements.md - Functional requirements:
docs/requirements/functional-requirements.md - Evidence and capability traceability:
docs/requirements/traceability.md - Alignment decisions and preserved conflicts:
docs/requirements/alignment-decisions.md - Machine-readable schedule/status:
docs/shipaton/roadmap.json - Append-only release evidence:
docs/shipaton/release-evidence.md - Devpost, demo, asset, and BuildInPublic working set:
docs/shipaton/
PrepAI is public source under the MIT license. Health and safety behavior is still governed by the release manifest, reviewed content boundaries, platform policy, and the evidence gates above.