CrewAnchor: Agile Backlog
Epic 1: Offline-First Tactical Breathing Engine
US-101: Offline Grounding Access
As a stranded Flight Attendant, I want to access grounding exercises while my phone is in Airplane Mode, so that I can manage my anxiety even when I have no data connection on the tarmac.
Acceptance Criteria:
- The “IRROPS Grounding” tab utilizes cached local data assets exclusively upon application initialization; no network call is made to render the exercise list.
- All guided audio files do not exceed a compressed size of 5MB each, to stay within local device storage constraints for crew who may not clear app cache between trips.
- If network connectivity drops (
navigator.onLine == false) mid-session, a localized “Offline Mode Active” banner renders cleanly instead of a spinning loader or application crash.
US-102: Fast Entry Under Time Pressure
As a Flight Attendant with a 4-minute window before boarding, I want the breathing exercise to start within one tap from the home screen, so that I can use the tool without burning my limited window on navigation.
Acceptance Criteria:
- From app launch, the “Breathe & Box” / “IRROPS Grounding” action is reachable in a single tap; no intermediate screen, login, or confirmation dialog.
- Once the app is open, the exercise begins playback/animation within 500ms of the tap. Cold launch to a usable home screen targets under 3 seconds on a mid-range device; if launch takes longer, a lightweight launch screen appears immediately so the user knows the app is loading.
- A visible countdown/timer is present for the full duration of the exercise so the user can judge, mid-exercise, whether they have time to finish before boarding.
US-103: Session Interrupt Handling
As a crew member who gets called back to position mid-exercise, I want to be able to exit instantly without losing my place, so that an interruption doesn’t feel like a failure or add friction to using the app again.
Acceptance Criteria:
- A single, obvious exit action (not a multi-step “are you sure” flow) returns the user to the home screen from any point in an active exercise.
- No error, crash, or data-loss state occurs if the app is backgrounded or force-closed mid-exercise.
- Exiting early does not reset the user’s local streak/usage state; partial use is still counted as a successful grounding session.
Epic 2: Zero-Data Privacy Vault
US-201: Sign In Without Being Tracked
As a crew member, I want to access the app through my existing company sign-in (SSO) without a separate account or extra form, so that getting in is effortless and I’m not handing over new personal data just to start.
Acceptance Criteria:
- The app authenticates via the company’s existing SSO; no separate sign-up form, and no additional personal fields (phone number, personal email) are collected beyond what SSO already provides.
- No in-app usage event, which screens opened, which exercises used, how long, is transmitted or logged with a user-identifying token.
- All generated local state (streaks, preferences) stays device-local and is never synced to a server against the user’s identity.
US-202: On-Device Encrypted Storage
As a user, I want my usage history stored only on my device and encrypted at rest, so that no one, including Delta, can recover what I used the app for.
Acceptance Criteria:
- All persisted user state is written to platform-native encrypted local storage (e.g., iOS Keychain/Secure Enclave-backed storage or Android EncryptedSharedPreferences), never plaintext.
- No usage analytics event is transmitted off-device without being fully stripped of any user- or device-identifying field.
- Uninstalling the app permanently and irrecoverably deletes all local state; there is no server-side backup to restore from, by design.
US-203: Clear Privacy Disclosure
As a crew member evaluating whether to trust this tool, I want a plain-language explanation of exactly what is and isn’t collected, so that I don’t have to take “we don’t track usage” on faith.
Acceptance Criteria:
- A “What we collect” screen is reachable from the home screen in one tap and uses plain language, not legal boilerplate, as the primary explanation.
- The disclosure states plainly that sign-in uses the crew member’s existing company credentials, but that no in-app usage activity, exercises used, time spent, screens opened, is logged, stored centrally, or reviewable by Delta.
- The screen is static content bundled with the app (no network fetch required) so it’s available offline and can’t be silently changed server-side without an app update.
Epic 3: Peer-to-Peer Bulletin Board
US-301: Post Under a Display Label, Not Your Name
As a delayed crew member, I want to post a short message to other crew without revealing who I am, so that I can feel supported without any risk to my professional record.
Acceptance Criteria:
- Posting requires no identity field of any kind; posts are attributed only to a randomly generated, non-reversible session label (e.g., “Crew-4821”) that resets periodically.
- Message length is capped (e.g., 280 characters), and content passes the first stage of the moderation pipeline defined in US-303 (an on-device keyword check) before being queued for sync.
- A post made while offline is queued locally and clearly marked “Pending: will send when connected,” never silently dropped.
US-302: Opportunistic Sync, Never Blocking
As a user on a spotty connection, I want the bulletin board to sync in the background without blocking the grounding tools, so that the app’s core safety function is never degraded by a social feature.
Acceptance Criteria:
- Bulletin board sync runs on a background thread/async task and never blocks or delays the Breathing Engine (Epic 1) from being tap-to-start.
- If sync fails, the last successfully cached set of messages remains visible, with a “Last updated Xm ago” timestamp rather than an empty or error state.
- Sync retries use backoff and never retry more than once per 30 seconds, to avoid battery/data drain on crew with limited connectivity windows.
US-303: Lightweight Moderation
As a crew member reading the board, I want assurance that posts are moderated, so that the space stays safe and doesn’t become a liability or a source of additional stress.
Acceptance Criteria:
- Moderation is a two-stage pipeline: an on-device keyword check before a post is queued (US-301), then an automated toxicity filter before the post is visible to other users. Flagged posts are held for review rather than published.
- Users can report a visible post in one tap; a reported post is hidden from that reporting user’s view immediately, pending review.
- No report or moderation action is ever linked back to a crew member’s real identity in a way visible to other users; moderation operates only on the display label.
US-401: Browse Hotel-Room Workouts Offline
As a crew member on a layover with no gym access, I want to browse and play no-equipment workout routines without needing a connection, so that I can use the time in my hotel room productively even with no Wi-Fi.
Acceptance Criteria:
- The Layover Fitness Library renders its full catalog from locally bundled assets on load; no network call required to browse or play a routine already downloaded with the app.
- Routines are tagged by category (“Energy Reset,” “Low-Impact,” “Sleep-Prep Stretch”) and filterable by duration (10/15/20 min) so a crew member can match content to the time they actually have.
- If a routine’s video asset hasn’t been downloaded yet (future content-pack update), the UI clearly labels it “Download on Wi-Fi” rather than silently failing or showing a broken player.
US-402: Guided Meditation Without a Subscription
As a crew member who can’t justify a $70/month wellness subscription on this income, I want free guided meditation content built into a tool I already trust, so that I get the same category of support without the cost barrier.
Acceptance Criteria:
- The Meditation Library is reachable from the home dashboard in one tap, alongside, not buried under, the core grounding tools.
- Each track displays runtime and category (Sleep, Jet Lag Reset, Pre-Flight Anxiety) before playback so the user can choose based on the time and need they actually have.
- No paywall, trial-expiration, or upsell prompt appears anywhere in the flow; the product’s free-vs-paid positioning is a hard requirement, not a soft default.
US-403: Content Storage Stays Within Device Limits
As a user with limited phone storage, I want the fitness and meditation libraries to respect sensible storage limits, so that CrewAnchor doesn’t become the app I have to delete to make room for something else.
Acceptance Criteria:
- Total bundled Phase 2 content (video + audio) does not exceed a defined device storage budget (e.g., 250MB) for the initial content pack.
- Users can selectively delete downloaded content packs from a storage-management screen without losing their MVP-tier data (streaks, preferences, vault state).
- New content-pack updates are opt-in (user-initiated download), never auto-downloaded over cellular data.