Title Town PDX: 26 automatic updates, Oct 4 to Oct 19, 2026, each checked against the league

For Portland fans following the Fire, the Thorns and the Cascade.

Title Town PDX covers Portland's three pro women's teams for fans checking scores, rosters and how to get to the game. Every result makes yesterday's page wrong, so I stopped fixing pages by hand and built a site that corrects itself on a schedule, with checks that compare it to the league instead of to itself.

Visit Title Town PDX Read the story

Captured at 390px, October 20, 2026. Unedited full capture · Current page
The Today page of Title Town PDX on a phone: whether a Portland game is live, the next match and the latest result, filled in from the site's events file

8 months in In search since Mar 16, 2026; data through Oct 30, 2026

  1. First recorded version Mar 15, 2026
  2. Seen on Google Mar 16, 2026
  3. First 100-click month Apr 2026, 158 clicks
  4. Seen on Bing Apr 10, 2026
  1. First 1K-click month Jun 2026, 1.5K clicks
  2. Best month yet Jul 2026, 1.7K clicks
  3. Now, 8 months in Sep 2026, 290 Google and Bing clicks
  • 2.6KBing AI citations in September 2026, about flat on August. The last complete month in Bing's export
  • 1.7KGoogle and Bing clicks in July 2026, the most in any complete month

FTurn every lesson into a systemIts mascot: Glaceon

A Portland fan checking tonight's game on a phone

A Portland fan on a phone wants to know who plays tonight, where to watch, and whether the Fire are still in it. Three leagues, three venues, three schedules, and no single fan source covered the Fire (WNBA), the Thorns (NWSL) and the Cascade (AUSL) together. I grew up in Portland and follow all three teams from Austin now, so I built the source I wanted.

The catch is that sports facts expire. A roster page is right on Tuesday and wrong after Wednesday's signing. A "season underway" line is true in July and false the morning after elimination. So the job was keeping them true without retyping them every week.

The readers who need that most are the ones AI answers send. In Bing's export, the query cited most was "portland fire roster": 3.5K citations, and this site was the source in 37% of the answers that cited anyone. A roster has to be right the day someone asks.

The query and its share are from Bing Webmaster Tools' AI Performance export, window ending Oct 30, 2026. A real search, quoted as Bing recorded it.

One file holds every game, and a bot updates it twice a day

One canonical events file holds every game for all three teams, and every page derives from it: records, form strips, schedules, banners, calendar feeds and the structured data search engines read. Change the file and the whole site moves with it.

Results flow in from ESPN on a schedule, 2 runs a day, matched on the game's stable event ID. In the live test before it shipped, matching on dates caught 2 of 8 games, because ESPN stamps an evening Pacific game a day ahead in UTC. Matching on IDs caught 8 of 8. An evening run was added later so a finished game stops showing as "today" on the night people search for the score; the shift log further down shows when it actually lands.

Before anything ships
9 validation scripts and the unit tests run in the build

They check
Freshness, stale tense, roster parity, expired windows, results backfill, season phase

Proof they fire
3 scripts plant the defect and expect the check to fail

A separate heartbeat runs on the morning schedule and fails on any played game the file hasn't recorded. The site's pages for the reader:

On titletownpdx.com

Counted in the site's own build configuration and scripts, read Oct 13, 2026.

Bing AI citations peaked in July 2026

Bing AI citations about flat in September, down 5% on August. Bing's export records how often a Bing AI answer cited the site, month by month, through Oct 30, 2026.

Data through

May 2026: what else happened

This is what else was going on that month. I list it for context; nothing here shows any of it moved my clicks.

June 2026: what else happened

This is what else was going on that month. I list it for context; nothing here shows any of it moved my clicks.

August 2026: what else happened

This is what else was going on that month. I list it for context; nothing here shows any of it moved my clicks.

September 2026: what else happened

This is what else was going on that month. I list it for context; nothing here shows any of it moved my clicks.

HI-SCORE the best month so far

A Google or Bing change The row under the months is what else happened; tap a month for it. Under each month, how much it rose or fell from the month before. Complete months only. Bing Webmaster Tools AI Performance export, pulled by hand, data through .
Bing AI citations about flat in September, down 5% on August.
MonthBing AI citationsChange from the month before
April935first month
May2Kup 116%
June4.9Kup 144%
July8.6Kup 75%
August2.8Kdown 68%
September2.6Kdown 5%

Two roster pages did most of that work: /fire/roster/ drew 8.3K citations and /cascade/roster/ drew 3.6K in the export window. Those are the pages the sync keeps current.

Search clicks followed the calendar. Google and Bing together sent 1.7K clicks in July 2026, the most of any complete month, and 290 in September 2026. The Cascade's season ended on Jul 23, 2026 and the Fire's on Sep 22, 2026, and a fan site's traffic goes where the games go. The month-by-month chart below shows every month.

It keeps updating itself. On Oct 13, 2026 the homepage led with the Oct 3, 2026 result, Thorns 2, Boston Legacy 4, and from Oct 4 to Oct 19, 2026 it ran 26 scheduled updates on the schedule and checks I set: 12 results syncs and 14 daily rebuilds.

16 days, 26 scheduled commits: 4 of the days missing a run, from Oct 4 to Oct 19, 2026.

A commit by the bot: 26A day the run made no commit: 6

16 days, 26 scheduled commits: 4 of the days missing a run, from Oct 4 to Oct 19, 2026.
Sun, Oct 4Results sync 3:47 a.m.; rebuild 10:43 a.m.
Mon, Oct 5Results sync 4:53 a.m.; rebuild 2:20 p.m.
Tue, Oct 6Results sync 4:33 a.m.; rebuild 11:57 a.m.
Wed, Oct 7Results sync 4:23 a.m.; rebuild 12:25 p.m.
Thu, Oct 8Results sync 4:39 a.m.; rebuild 12:19 p.m.
Fri, Oct 9Results sync 4:32 a.m.; rebuild 11:53 a.m.
Sat, Oct 10Results sync 3:50 a.m.; rebuild 10:55 a.m.
Sun, Oct 11Results sync 4:03 a.m.; rebuild 11:12 a.m.
Mon, Oct 12Results sync 5:30 a.m.; rebuild 2:47 p.m.
Tue, Oct 13Results sync 5:14 a.m.; rebuild 12:54 p.m.
Wed, Oct 14Results sync 2:48 a.m.; rebuild 11:04 a.m.
Thu, Oct 15Results sync 2:29 a.m.; rebuild 10:49 a.m.
Fri, Oct 16No results sync; rebuild 10:33 a.m.
Sat, Oct 17No results sync; rebuild 9:31 a.m.
Sun, Oct 18No results sync; no rebuild
Mon, Oct 19No results sync; no rebuild
All cells32
Top row: the results sync. Bottom row: the daily rebuild. GitHub's commit history for the site, Pacific time, read Oct 20, 2026, data through .

The log also caught something the green checks never would. The evening run, the one added so a finished game stops reading "today" on game night, is set for 05:00 UTC, which is 10 p.m. in Portland. On all 16 days GitHub started it 3.9 to 7.5 hours late, so its commit landed between 2:29 a.m. and 5:30 a.m. Pacific, the next morning instead of that night.

How I measured it. Bing AI citations: Bing Webmaster Tools' AI Performance export, a manual pull that stops at Oct 30, 2026. Search clicks: Google Search Console and Bing Webmaster Tools daily totals summed by complete month, through Oct 30, 2026. Commits and run times: GitHub's commits and Actions APIs for the site's repository, read Oct 20, 2026. None of this separates the season from anything changed on the site.

Clicks by month follow three teams' seasons

The Cascade's season ended on Jul 23, 2026 and the Fire's on Sep 22, 2026, so the drop after July follows the teams' calendar. The fair comparison is the same weeks of next season; this is the site's first.

Data through

April 2026: what else happened

This is what else was going on that month. I list it for context; nothing here shows any of it moved my clicks.

May 2026: what else happened

This is what else was going on that month. I list it for context; nothing here shows any of it moved my clicks.

June 2026: what else happened

This is what else was going on that month. I list it for context; nothing here shows any of it moved my clicks.

July 2026: what else happened

This is what else was going on that month. I list it for context; nothing here shows any of it moved my clicks.

August 2026: what else happened

This is what else was going on that month. I list it for context; nothing here shows any of it moved my clicks.

September 2026: what else happened

This is what else was going on that month. I list it for context; nothing here shows any of it moved my clicks.

HI-SCORE the best month so far

Google Bing In season Off season A Google or Bing change The row under the months is what else happened; tap a month for it. Under each month, how much it rose or fell from the month before. Complete months only. Google Search Console and Bing Webmaster Tools, data through .
Search clicks down 43% in September; the best month is still July.
MonthSearch clicksChange from the month before
April158first month
May502up 218%
June1.5Kup 195%
July1.7Kup 15%
August511down 70%
September290down 43%

In Google's AI answers

AI Overview appearances down 13% in September, after a record August.

Data through

August 2026: what else happened

This is what else was going on that month. I list it for context; nothing here shows any of it moved my clicks.

September 2026: what else happened

This is what else was going on that month. I list it for context; nothing here shows any of it moved my clicks.

HI-SCORE the best month so far

A Google or Bing change The row under the months is what else happened; tap a month for it. Under each month, how much it rose or fell from the month before. Complete months only. Google Search Console, Generative AI report (times a page showed up in an AI answer, clicked or not), exported by hand, data through .
AI Overview appearances down 13% in September, after a record August.
MonthAI Overview and AI Mode appearancesChange from the month before
August3.5Kfirst month
September3Kdown 13%
The numbers, month by monthTitle Town PDX's search clicks and the changes I made, data through Oct 30, 2026
Title Town PDX: changes I made, and search clicks on Google and on Bing compared with the month before, by month
MonthChanges madeGoogleBing
Apr 2026 46first monthfirst month
May 2026 21up 121%up 342%
Jun 2026 2up 443%up 34%
Jul 2026 23up 16%up 13%
Aug 2026 17down 75%down 56%
Sep 2026 6down 34%down 56%

content technical data other

Every miss passed a check

The misses were real, and each one passed a check at the time.

I shipped invented history

On April 14, 2026 I found that every season record on the original Fire history page was wrong, and that a coach who never coached the team was named on another page. Both were fixed that day. A made-up attendance figure went the same way in May 2026. These came from publishing before I verified.

Automation that reported success and did nothing

The daily rebuild had been a no-op from the day it shipped: a missing secret sent it down a skip branch that exited clean every morning, so "today" froze. I found it on August 2, 2026. On August 29, 2026 I found the cached league data judged its own age by file time, which every checkout resets, so one hub had served a table from April 5 for months.

A wrong score, live for weeks, with every check passing

A Cascade score posted on July 11, 2026 was wrong on the live site until August 8. The old check compared the site to its own ledger, and the ledger held the same wrong score. Arithmetic caught it: the season totals were off against the league's published standings. The Fire were eliminated on Aug 25, 2026 and nothing on the site said so until September 6, 2026; the hub still led with preseason copy. And the hand-written recaps stopped in May 2026 while the automation kept running, because recaps needed a person every game.

What changed

I changed what the checks compare against. Season totals are asserted against the league's own standings instead of my ledger. A season has a phase with a dated end, so "eliminated" retires itself after the last game instead of waiting for me. A check that hunts for pre-debut copy reads the player's own games-played count before it decides a phrase is stale. And automation has to prove it did something, not just exit clean. The Fire's hub now closes year one at 17-27, written the day the miss was found, and the checks keep it that way.

Dates are from the site's own commit history, read Oct 13, 2026; the Fire's record and elimination date from its live hub.

Where these numbers come from

A different question from the same site: when a search already shows one of its pages, does it need another? Try the content-gap lesson with Title Town’s query rows.

Arrow keys move. Enter opens. Esc closes.

Ask Bella

Ask Bella Hayden's corgi, who answers from this site and cites every fact.

BELLA

WOOF. I'm Bella, Hayden's corgi. He's my human. Ask me about him; every answer cites its source.

Reading this page? The top button is my short version of it.

How it works: the answers are written ahead from this site's pages, and anything else gets a search of the site that shows you its exact words. Every claim has a numbered source you can tap. Nothing is generated while you wait, nothing is made up, and nothing you type leaves your browser. Every answer, in plain HTML

Top

This page was first published This page was last updated