# Content Refresh Process Fan Passport depends on fresh, trustworthy, fixture-reactive content. This process gives operators a repeatable way to plan, publish, localize, correct, and retire live content without sacrificing accuracy or safety. ## Content types operated daily | Type | Description | Typical owner | Review requirement | | --- | --- | --- | --- | | Daily challenge | A time-boxed mission that awards XP, badge progress, collection progress, or reward eligibility. | Content Lead | Football Data Editor and QA review. | | Trivia card | One daily question and optional archive questions. | Content Lead | Fact verification and answer QA. | | Prediction prompt | User pick that locks before kickoff or event deadline and resolves after official result. | Football Data Editor | Data lock QA and scoring QA. | | Collection drop | Sticker, stadium page, team reveal, host city card, or moment collectible. | Content Lead | Metadata and art QA. | | Match memory card | Post-match card summarizing a user's watched, predicted, or followed match. | Content Lead | Result verification and tone review. | | Achievement or badge | Unlockable recognition for a behavior or milestone. | Live Ops Lead | Rule QA and anti-fraud review if competitive. | | Sponsor or reward unit | Sponsored placement, offer, coupon, sweepstake entry, or prize unlock. | Partnerships Manager | Legal/compliance and support review. | | Notification copy | Push, email, in-app, or share copy connected to a campaign or trigger. | Growth/CRM Manager | Frequency, personalization, and localization review. | | Moderation notice | User-facing content removal, warning, appeal, or leaderboard integrity message. | Community Lead | Policy and legal review for severe cases. | ## Content state model All scheduled and reactive content should move through these states. The existing CMS or admin system can represent the states directly or map them to equivalent workflow labels. | State | Meaning | Who can move content forward | | --- | --- | --- | | Draft | Content exists but has not been reviewed. | Content Lead or Growth/CRM Manager. | | Football review | Names, facts, fixtures, standings, scores, and answer logic are being verified. | Football Data Editor. | | Compliance review | Sponsor claims, regulated categories, sweepstakes, IP usage, and age restrictions are being checked. | Legal/Compliance Reviewer. | | Localization | Approved source copy is translated or adapted for supported locales. | Localization owner under Content Lead. | | QA ready | Content is final enough for functional testing, preview, deep-link validation, and reward-rule validation. | Live Ops Lead. | | Scheduled | Content has start and end times, target segments, reward rules, and rollback instructions. | Live Ops Lead. | | Live | Content is visible to eligible users. | Scheduling system or Live Ops Lead. | | Needs fix | Live or scheduled content has an error requiring correction. | Live Ops Lead with relevant owner. | | Retired | Content is no longer active but remains available for audit, recap, and historical passport pages. | Live Ops Lead. | ## Definition of done for publishable content A content item is publishable only when all applicable criteria below are true: - It has a unique content ID that matches the naming convention used by the schedule or CMS. - It has a title, short description, long description where needed, start time, end time, and eligibility segment. - It has a clear mechanic and reward outcome. - It has a fallback path for fans without a relevant followed team or live fixture. - Fixture, team, stadium, and player references are linked by IDs from the authoritative content model. - The reward rule has been tested against a valid user, an ineligible user, and an edge-case user. - Prediction prompts show lock time before submission and cannot be changed after lock unless the rule explicitly allows edits. - Trivia has exactly one correct answer unless the mechanic supports multiple correct answers. - Explanatory trivia text cites a reliable source in the internal content record. - Sponsor claims are approved and include required disclosure. - Copy is localized, or the item is explicitly configured for source-language-only release. - Share cards do not expose private information, precise location, raw email, phone number, or age. - Rollback action is known: disable, replace, expire, or convert to non-scoring. - Analytics event names are mapped to the taxonomy in `data/analytics/events.json`. ## Rolling planning windows ### Four-week lock Every week before the tournament, the team should lock the next four weeks of: - Daily themes. - Primary challenge IDs. - Trivia themes. - Collection drops. - Sponsor placements. - Reward inventory. - Notification campaigns. - Experiment slots. - Moderation coverage assumptions. The four-week lock is about operational readiness, not inflexibility. Reactive content can still be added through the fast lane below. ### Ten-day publish queue From T-30 onward, maintain at least ten fully reviewed days in the scheduled queue. During the tournament, the queue should always contain: - The current live day. - The next three days fully scheduled. - The following seven days in QA-ready state. - Knockout rest-day content that can be adapted regardless of which teams advance. ### Daily refresh Every tournament morning, operators should update: - Fixture status and kickoff lock times. - User-facing team personalization. - Prediction result states from prior matches. - Leaderboard snapshots. - Featured squad or country competition. - Moderation risk watchlist. - Sponsor inventory remaining. - Support macros for the day's likely confusion. ## Daily content workflow | Time | Step | Details | | --- | --- | --- | | Previous day 17:00 | Next-day readiness check | Confirm all scheduled content, notifications, rewards, and fallback rules. | | Previous day 21:00 | Fixture reconciliation | Validate kickoff windows and team IDs against the fixture feed. | | Current day 07:30 | Overnight fact check | Review late results, injuries only if officially relevant, standings, and qualification scenarios. | | Current day 08:00 | Copy and creative QA | Preview daily feed, passport page, challenge page, share card, and localized copy. | | Current day 08:30 | Reward and fraud QA | Check inventory limits, eligibility rules, referral limits, and fraud thresholds. | | Current day 09:00 | Publish | Activate the daily feed and verify from a clean test account. | | Current day 10:00 | First notification window | Send daily ritual prompt to eligible users within frequency caps. | | Before each kickoff | Lock validation | Confirm prediction lock and check-in windows. | | After each final whistle | Result resolution | Verify result, resolve predictions, issue achievements, and check errors. | | After match block | Reactive content decision | Decide whether to publish memory cards, rare badges, or upset prompts. | | Daily close | Record and adapt | Document performance, incidents, support trends, and changes for the next day. | ## Reactive content fast lane Reactive content is allowed when it enhances the living tournament feeling and can be reviewed quickly. It should not bypass factual or safety standards. | Scenario | Example content | Maximum target latency | Required approvals | | --- | --- | ---: | --- | | Major upset | "I called the giant killing" share card, upset sticker, bonus trivia. | 90 minutes after result verification. | Football Data Editor, Content Lead. | | Penalty shootout | Penalty nerve badge, shootout trivia, goalkeeper memory. | 60 minutes after result verification. | Football Data Editor, Content Lead. | | Record or milestone | Record-breaker sticker or achievement. | 4 hours after verification. | Football Data Editor, Content Lead, Legal if sponsor attached. | | Viral fan moment | Supporter culture poll or memory prompt. | Same day. | Content Lead, Community Lead. | | Qualification drama | "My passport survived the group" card. | 2 hours after standings verification. | Football Data Editor. | | Controversial incident | Neutral explainer or no content. | No forced deadline. | Live Ops Lead, Community Lead, Legal if necessary. | | Data feed error | Correction notice and non-scoring fallback. | 30 minutes after detection. | Engineering On-call, Live Ops Lead. | Reactive content should avoid mocking eliminated teams or individual players. Emotional content should celebrate supporters, effort, history, and the user's journey. ## RACI matrix | Activity | Live Ops Lead | Content Lead | Football Data Editor | Growth/CRM | Partnerships | Community | Analytics | Engineering | Legal | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | Daily calendar ownership | Accountable | Responsible | Consulted | Consulted | Consulted | Consulted | Consulted | Consulted | Informed | | Trivia approval | Informed | Accountable | Responsible | Informed | Informed | Informed | Informed | Informed | Consulted when sponsored | | Prediction setup | Accountable | Consulted | Responsible | Informed | Informed | Informed | Consulted | Responsible | Informed | | Collection drops | Accountable | Responsible | Consulted | Informed | Consulted | Informed | Informed | Consulted | Consulted for IP | | Notification send | Accountable | Consulted | Consulted | Responsible | Consulted | Informed | Consulted | Consulted | Consulted if regulated | | Sponsor reward | Accountable | Consulted | Informed | Consulted | Responsible | Consulted | Consulted | Consulted | Accountable for terms | | Moderation enforcement | Informed | Informed | Informed | Informed | Informed | Accountable | Consulted | Consulted | Consulted for severe cases | | Analytics reporting | Consulted | Informed | Informed | Consulted | Consulted | Consulted | Accountable | Consulted | Informed | | Incident rollback | Accountable | Consulted | Consulted | Consulted | Consulted | Consulted | Consulted | Responsible | Consulted | ## Content record fields Each content item should include these fields in the CMS, database, or content import file: | Field | Required | Description | | --- | --- | --- | | `content_id` | Yes | Unique stable ID, such as `LO26-D18-BRACKET-BUILDER`. | | `passport_season` | Yes | Season or campaign, such as `world_cup_2026`. | | `content_type` | Yes | Challenge, trivia, prediction, collection, reward, notification, badge, memory. | | `title` | Yes | User-facing title. | | `short_description` | Yes | Compact user-facing description. | | `long_description` | No | Full details for complex rules or reward terms. | | `mechanic` | Yes | The action the user must complete. | | `eligibility_segment` | Yes | Segment logic, such as all users, followed-team fans, squad members, or dormant users. | | `starts_at_utc` | Yes | UTC activation time. | | `ends_at_utc` | Yes | UTC expiry time. | | `fixture_slot_ids` | Conditional | Fixture IDs when content depends on match state. | | `team_ids` | Conditional | Team IDs when content is team-specific. | | `stadium_ids` | Conditional | Stadium IDs when content is venue-specific. | | `locale` | Yes | Locale code for copy. | | `reward_rule_id` | Conditional | Rule or campaign ID for XP, badge, coupon, or sweepstake entry. | | `sponsor_id` | Conditional | Sponsor identifier where relevant. | | `legal_copy_id` | Conditional | Approved terms or disclosure reference. | | `analytics_tags` | Yes | Campaign, content, phase, and experiment tags. | | `version` | Yes | Incrementing version for audit and rollback. | | `review_status` | Yes | State from the content state model. | | `rollback_action` | Yes | Disable, replace, expire, or convert to non-scoring. | ## QA test cases for daily content For every daily content release, test these cases: 1. New user with no followed team can complete the day's primary or fallback path. 2. Returning user with a followed team sees personalized team content. 3. Dormant user receives only eligible reactivation prompts. 4. User who already completed the daily challenge cannot farm duplicate rewards. 5. User in a quiet-hours timezone does not receive a push notification outside policy. 6. Prediction locks before kickoff and displays the correct locked state. 7. Result resolution awards correct, incorrect, and voided outcomes properly. 8. Collection drop grants first-claim bonus once and persists the collected item. 9. Share card renders without private data. 10. Sponsor reward displays terms and respects inventory limits. 11. Moderated or suspended user cannot abuse social surfaces or leaderboards. 12. Offline or delayed score feed path does not award incorrect prediction results. 13. Localization does not truncate critical rule or legal text. 14. Analytics events fire for view, start, complete, reward, share, and notification open paths. ## Localization and accessibility standards - Keep source copy short, concrete, and idiom-light. - Avoid jokes that depend on one national perspective or mock eliminated teams. - Provide alt text for sticker, badge, and share-card art. - Do not encode critical state only through color. - Use local time display for kickoff locks and expiry windows. - Support right-to-left and longer translated strings in share cards and challenge tiles. - Ensure sponsor disclosures remain visible in all locales. - Use plain-language reward terms and age restrictions. ## Correction and rollback process When live content is wrong or unsafe: 1. Live Ops Lead declares the issue and severity. 2. Engineering On-call pauses the affected content, reward, notification, or leaderboard if needed. 3. Football Data Editor or Content Lead identifies the factual or copy correction. 4. Legal or Community Lead reviews if the issue involves sponsor terms, safety, harassment, or regulated content. 5. Corrected content is published as a new version. 6. If user rewards were affected, Analytics Lead provides the impacted user set and Support Lead prepares the remedy message. 7. Daily close records cause, impact, fix, user remedy, and prevention. Do not silently remove a user-earned legitimate reward unless fraud or rule abuse is confirmed. If a platform error over-awards a low-cost digital item, prefer honoring it and correcting future logic.