# Reactions-per-view comparison recipe

A fixed-horizon formula and coverage checklist for comparing measured reaction intensity without mixing post ages.

## Calculation

- Mode: normalized_engagement_ranking
- Formula: reactions_total / views from the same captured snapshot at one shared target_age_seconds horizon.

## Query

For [selected or previously listed posts], compare reactions_total divided by views at one shared post-age horizon. Show numerator, denominator, rate, horizon, eligible/measured/missing counts, every exclusion reason, next readiness time when known, and citations. Withhold a global winner when coverage is partial or collecting.

## Inputs

- **Candidate posts:** A fixed selected-source/date set or exact references inherited from a prior result.
- **Numerator:** Telegram reactions_total captured at the shared horizon.
- **Denominator:** Telegram views captured in the same snapshot.
- **Readiness rule:** All candidates must have reached the chosen scheduled post age.

## Expected output

- Ordered reaction/view rates
- Numerators and denominators
- Shared observation horizon
- Coverage state and exclusion details
- Cited post references

## Coverage checks

- [ ] Never mix different post-age horizons
- [ ] Never replace missing views with zero
- [ ] Do not name a global winner for partial coverage
- [ ] Do not interpret reactions as positive sentiment
- [ ] Preserve the exact candidate set in follow-ups
