---
title: Carry the data-first emphasis to the remaining xo.football public copy
type: task
status: completed
description: >-
  The operator ruling that public copy leads with the data suite and the agentic and external-league
  features, rather than the one hosted league, was applied to the landing page only. README What it
  does, /about, and the menu Roadmap link still carry the old emphasis or the old destination.
base_uri: user:task/league/carry-data-first-emphasis-to-public-copy.md
created_at: '2026-09-05T00:44:59.616Z'
entity_id: 7d28dfcb-89e5-47a0-8e07-3f6621dadd34
finished_at: '2026-09-07T03:20:52.559Z'
observations:
  - ████████████████████████████████████████████████
owner_identity_uri: █████████████████████████
priority: Medium
public_read: true
tags:
  - user:tag/league-xo-football.md
updated_at: '2026-09-07T03:21:02.981Z'
visibility_analyzed_at: '2026-11-05T23:48:29.022Z'
---

## Why

The operator set a clear emphasis for xo.football's public copy on 2026-09-04: lead with the data suite and the agentic and external-league capabilities, do not centre the one hosted league, and demonstrate breadth by naming things rather than claiming it. That direction was applied to the landing page at `/` and to nothing else, so the remaining public surfaces still lead with the hosted league and contradict the front door a reader just came from.

## Plan

- [x] Carry the data-first emphasis to the remaining public surfaces, landing page being the reference — done in `8825613ea`.
  - [x] `README.md` "What it does": open on the data suite, give agent-built views their own seat, move the hosted league last with Genesis League as one league running on the platform.
  - [x] `/about`: confirmed the route renders the repo README (`app/views/routes.js` maps `/about` to `MarkdownPage path='/README.md'`), so the README change is the about-page change; no separate surface exists.
  - [x] Menu `Roadmap`: repoint at the Base task view filtered to the league tag via `ROADMAP_URL` in `app/core/constants.js`; old GitHub project board URL gone tree-wide.
- [x] Preserve `site_tagline` verbatim in the README (meta description and repo description); the two copy specs stay green at 16 passing.

## What moved from the landing page

Landing page, in commits `dba57715d` and `447add8b0`:

- The deck leads with projections, betting markets and play-by-play, and names agent-built views and league import in present tense.
- The Leagues blurb states the ruleset as a feature list instead of offering a hosting service.
- League front office precedes Genesis League inside that section.

## Constraints

- `test/libs-shared.social-meta-copy.spec.mjs` asserts the README embeds `site_tagline` verbatim. The tagline is deliberately standalone — it is also the meta description and the GitHub repo description — so change the surrounding copy, not that sentence.
- No filled call-to-action button on any reading page, and no superlative claims. The operator ruled explicitly on 2026-09-04: show it, do not say it.
- Run the copy gates without the global setup, which drops every table in a shared database:
  `NODE_ENV=test npx mocha test/app.landing-links.spec.mjs test/libs-shared.social-meta-copy.spec.mjs`

## Known-open decision

`League import` in the landing directory carries the note `in development` and has no destination — there is no import route in `libs-shared/page-routes.mjs` and no import UI anywhere under `app/views/`. The operator approved leaving it on 2026-09-04. The deck says leagues import from Sleeper and ESPN, so if a self-serve surface ever ships, that note and the entry's missing `to` both need revisiting together.
