Problem
Human Engine needs low-friction subjective outcome data to validate recommendations later. The user should be asked for the right signal at the right time while preserving source and scale semantics.
User-facing flow
- Activity is ingested from Strava.
- User receives a one-tap post-workout RPE prompt.
- After relevant training days, user receives one next-day recovery prompt.
- Optional pre-ride subjective readiness can be collected before training when it is worth the friction.
- Feedback rows persist normalized score, source, type, payload, and historical context snapshot.
- Repeated taps update canonical rows and do not duplicate feedback.
Definition of done
- Post-workout and next-day feedback are automatic, low-friction, optional, and idempotent.
- Feedback ontology and source mappings are documented and versioned.
- Feedback supports Telegram now and future iOS/manual/Strava sources without losing origin semantics.
- Scheduled next-day prompts avoid duplicate prompts and respect timezone/quiet-hour rules.
- Feedback collection does not alter readiness or recommendation logic directly.
- Tests cover callback validation, upsert behavior, prompt scheduling, source mapping, and versioned semantics.
Linked existing issues
Completed prior work, not reopened
Migration note
Created from the accepted end-to-end epic proposal in docs/product/END_TO_END_EPICS_PROPOSAL.md. Existing feedback epic/history is preserved and linked here rather than renamed or closed.
Problem
Human Engine needs low-friction subjective outcome data to validate recommendations later. The user should be asked for the right signal at the right time while preserving source and scale semantics.
User-facing flow
Definition of done
Linked existing issues
Completed prior work, not reopened
Migration note
Created from the accepted end-to-end epic proposal in
docs/product/END_TO_END_EPICS_PROPOSAL.md. Existing feedback epic/history is preserved and linked here rather than renamed or closed.