Skip to content
Website

getscorebug.app

A marketing site that is mostly generated

getscorebug.app is Scorebug's marketing site: fifteen route files that generate more than two hundred pages. Nineteen league pages, one hundred and fifty-four club gear pages and forty-seven rivalry pages are written once and produced from data, and the whole site's launch messaging turns on a single switch.

Status
Live
Year
2025 – present

getscorebug.app, the live site

Fig. 01 — getscorebug.app · the plate opens the live site

01Brief

The problem

A product with nineteen leagues and a hundred and fifty-four clubs has a long tail of things people actually search for: "Leafs vs Canadiens", "Oilers jerseys", "can I track the CFL". No hand-written marketing site is going to cover that. There was a harder problem too. The app's launch state kept changing, and every stale "Get it on Google Play" button was a factual claim about availability that happened to be false.

02Measured

By the numbers

The figures that describe the shape of the build. Each one was read off the live site itself.

234

pages from 15 route files

154

club pages, generated

Counted from the live sitemap · 4 September 2026

  • 234URLs on the live sitemap: the fifteen route files, expanded.

03Process

The build

Decision by decision: how it is put together, and what each one bought.

15ROUTE FILES

234PAGES

Fifteen plates are drawn individually. The stack at the end of the last row stands for the remaining 219.

Dia. 01Fifteen route files, two hundred and thirty-four pages. Leagues, club gear and rivalry matchups are each one dynamic route over a typed dataset. Add a league or a club and the pages follow; nobody sits down and writes them. The long-tail search traffic arrives on those pages, and none of them was written by hand.
  1. Fifteen route files, two hundred-odd pages

    Leagues, club gear and rivalry matchups are each one dynamic route over a typed dataset, so a new league or a new club means one new row of data. That is where the long-tail search traffic comes from: every one of those pages answers a question somebody actually types, and none of them was written by hand.

  2. One switch owns every launch claim

    The site was advertising a Play Store listing that did not exist. Every store button led to Google's "requested URL was not found" page, and the same URL was being fed to search engines as an availability claim in structured data. Now a single constant, LAUNCH_STAGE, has three values: waitlist, testing, live. The nav button, the hero, the membership call to action, the footer and the structured data all read it. Flip the stage, deploy, and the whole site tells the truth again.

  3. Affiliate commerce, disclosed

    The gear pages carry Amazon Associates and partner links across a hundred and fifty-four clubs, and the shop runs headlessly against Shopify. The disclosure is printed on the page rather than buried somewhere off it. Commerce that funds the product without becoming the product.

  4. Written for answer engines as well as search

    Structured data on every generated page, a machine-readable brief at /llms.txt, and page copy that answers the question and stops. More and more of these questions get put to a model instead of a search box.

04Pages

Every page here was captured from the live site and set at the width a page is actually read. Each is cut to its own capture and runs at full measure, because a page shrunk into a column is a page nobody can read.

Fig. 02Nineteen league pages come from one route and one dataset.
Fig. 03Gear covers 154 club pages, each an affiliate storefront.
Fig. 04The matchups page turns the rivalry long tail into generated pages.
Fig. 05The pricing page draws its single price table from one constant.

05Stack

What it runs on

The tools in production, grouped by the job they do.

Application
  • Next.js 14 App Router
  • React
  • TypeScript
  • Tailwind CSS
Generation
  • Static generation
  • Typed datasets
  • Static export
Commerce
  • Amazon Associates
  • Impact
  • AvantLink
  • Shopify
Data
  • ESPN public API
  • Server-side proxy route
Discovery
  • JSON-LD
  • llms.txt
  • Sitemap
  • OpenGraph

Next project — Website

A live console for everything leaving Earth