---
title: Build Public Landing Page
type: task
status: blocked
description: >-
  Add a / route pitching the league to prospective managers, plus title, meta description, and Open
  Graph and Twitter cards so recruiting links render as previews.
base_uri: user:task/league/build-public-landing-page.md
created_at: '2026-08-14T23:23:45.020Z'
entity_id: f9e18af1-43d6-4bf7-8b71-0a419609c399
finished_at: '2026-08-15T01:41:16.674Z'
observations:
  - ████████████████████████████████████████████████
  - ████████████████████████████████████████████████
  - ████████████████████████████████████████████████
  - ████████████████████████████████████████████████
  - ████████████████████████████████████████████████
  - ████████████████████████████████████████████████
  - ████████████████████████████████████████████████
  - ████████████████████████████████████████████████
  - ████████████████████████████████████████████████
  - ████████████████████████████████████████████████
  - ████████████████████████████████████████████████
  - ████████████████████████████████████████████████
owner_identity_uri: █████████████████████████
public_read: true
relations:
  - relates [[user:orchestrator/manager-recruiting-2026/manager-recruiting-2026.md]]
  - >-
    blocked_by
    [[██████████████-███████-█████████████-████████████████-███████-███████-████████████████]]
started_at: '2026-08-15T01:08:33.233Z'
tags:
  - user:tag/league-xo-football.md
updated_at: '2026-09-12T17:41:47.174Z'
visibility_analyzed_at: '2026-11-05T23:48:28.673Z'
---

# Build Public Landing Page

## Overview

Give xo.football a front door — a `/` route that pitches the league to a prospective manager, with the social metadata that makes a shared link render.

## Background

Before this change no `/` route existed and the catch-all sent an anonymous visitor to `/data-views`, so a cold prospect landed on a raw data table with no copy, no pitch, and no call to action. `app/index.html` set the title to "League" with no meta description, no Open Graph tags, and no Twitter cards, so any recruiting link rendered as a bare URL.

Without escrow, the platform is the primary trust asset. A prospect evaluating whether to send money to a stranger will look at this page, so it is load-bearing rather than cosmetic.

## Plan

- [x] Add a `/` route with a landing page for the league pitch (`app/views/pages/landing/`). A member with a connected league is redirected to their league home rather than shown the pitch.
- [x] Lead with the trust assets that hold up today: the published constitution and its amendment record, on-chain commitment for anything decided at random, and the custom-built open-source platform. The team-value claim was dropped.
- [x] Explain the postseason. It is scored rather than bracketed, which is the least obvious thing about the league, so it has its own section.
- [x] Link the live league rather than screenshotting it — it is publicly readable without an account, so a prospect can check every claim directly. Screenshots removed.
- [x] Add title, meta description, canonical, Open Graph and Twitter card tags. Since superseded by the per-route metadata system in `libs-shared/page-routes.mjs`, which fills the head for every route rather than only this one.
- [x] Repoint `/about` at the landing page rather than the contributor README.
- [x] Deploy and verify against production.
- [ ] Give the page a call to action. It has none: the Discord fallback was an invite into the members' server and was removed, and the vetting questionnaire does not exist yet. One constant in `landing-content.js`.
- [ ] Link the recruiting documents once they publish. The section was removed rather than left with three dead slots.
- [ ] Write the manager-expectations copy. The first pass was removed at the operator's direction pending a rewrite.

## Notes

Tone is first-person and hobbyist throughout, and the page says outright that nothing is for sale. The Footballguys staff sticky excludes anyone who reads as a business recruiting for their product, and a polished commercial landing page is exactly what would trip that.

`/constitution` is still labeled "Rules" in the nav and serves the Genesis League constitution rather than platform documentation. Useful for recruiting this league, confusing for anyone evaluating the platform generally — left alone here, worth a deliberate label.
