1. Request and subscription states are separate#
Do not represent the account state, the registration-request state and the subscription state in one field. Each has an independent lifecycle:
- Account: active, unverified, suspended, deleted/scheduled for deletion.
- Request: draft, awaiting questionnaire, awaiting review, needs information, approved, rejected.
- Subscription: awaiting payment, active, expiring, paused, expired, cancelled, partially/fully refunded.
2. Payment does not activate a subscription on browser return#
Activation happens only after a signed webhook from the payment provider is verified, with idempotency and a match on amount, currency and order. The browser return page is not proof of payment.
3. Google Sheets permissions#
- Never create public links for files containing health data or measurements.
- Share with specific accounts, with the ability to revoke.
- The trainee gets Viewer by default, never Editor without a clear decision.
- File creation, sharing, revocation and sync are logged.
- A failed sync never stops the platform or changes database data.
4. Tracking and analytics#
- Collect the minimum necessary usage events, with clear notice and appropriate consent under the privacy policy.
- Page or video tracking is never used for health assessment or automated decisions against the trainee.
- “Active watch time” must be defined technically, including inactive tabs and connection loss.
5. AI assistant#
- Does not diagnose medical conditions, prescribe treatment, or recommend medications or steroid doses.
- Does not modify a published plan or send sensitive advice without the responsible coach's approval.
- States that calorie calculations and projections are estimates and may differ from actual measurement.
- Shows the data sources and period behind an analysis, with the ability to correct the data.
- Removes unnecessary personal data before sending it to the model provider, and defines conversation retention.
6. KPI definitions#
Every percentage in a dashboard or report must show its definition, period and denominator. A single “success score” is not a medical fact; it is a configurable operational indicator and must not hide the individual metrics.
7. Detailed acceptance criteria#
- A trainee cannot access another trainee's record by changing an ID in a URL or API call.
- An assistant coach cannot see an unassigned trainee.
- A nutritionist cannot edit a training program without explicit permission.
- A subscription is never activated without valid payment proof or a documented manual payment.
- Every edit to a published plan stores a previous version, the editor and the timestamp.
- No progress photo or private health file is reachable through a public link.
- A notification can be re-sent without creating a duplicate payment or invoice.
- A backup can be restored in a test environment and its files and database verified.
- Core interfaces work in Arabic RTL and English LTR, on mobile and desktop.
- Core journeys are tested automatically: registration, approval, payment, activation, workout logging, meal logging, weekly check-in, renewal and expiry.
:::
8. Change management#
Any addition after this document is approved is logged as a change request containing: the requirement, the reason for change, affected screens, impact on the database and API, security impact, time and cost estimate, and an acceptance criterion. Items listed as “later” are not a commitment within the baseline price or timeline.