Skip to content

Project

Section One

Independent product

I built Section One to help fans prepare for game day, then made the recurring cost of keeping another team useful the central engineering constraint.

  • Next.js
  • TypeScript
  • Applied AI
  • Playwright

The Reader’s Job

A fan should be able to catch up before kickoff and find the reporting or official game information behind what they read. Section One brings a short weekly briefing, matchup context, and schedule information into one team page. Story links send readers to the original outlets; game details provide a path to the official schedule.

Four Programs, One Platform

Texas, Utah State, Ohio State, and LSU share the same application. Typed team data supplies identity, presentation, and schedule context. Adding a program uses a shared onboarding contract instead of a copied page. That proves a reusable product boundary. Each program still needs source coverage and editorial attention before its edition is useful.

A Publication Boundary

The application accepts a versioned edition through a defined contract. Editorial production can evolve separately from the reader experience. Publication checks the package, rejects a draft based on an outdated revision, and preserves the previous edition in an archive. Those checks protect the handoff; they cannot establish that a source supports every sentence.

Different Information Ages Differently

The weekly briefing and observed game facts have separate update paths. A poll can change while a published matchup explanation remains the same. The page distinguishes publication dates from source verification, and answer caching accounts for the fact snapshot. Failed fact refreshes preserve the last accepted data. An aging briefing carries a review notice and a link to official game details.

Keeping Answers Accountable

The question interface uses the selected team’s context and attaches sources to grounded answers. It distinguishes direct fact lookups from questions that require an explanation. Dates and uncertainty remain part of the answer: a plausible sentence is not evidence that a game time or player status has been confirmed.

What I Can Claim Today

The product is live, with assisted editorial production and independent fact refreshes. Shared validation and browser checks cover published content, links, and team presentation; the four programs have also been checked in production at mobile and desktop widths in both themes. Weekly curation still requires judgment. I have not established unattended publication or measured a reduction in model cost. The next test is whether another program can stay useful at a sustainable maintenance cost.

Stack

Next.js · React · TypeScript · Tailwind CSS · Zod · Drizzle · Postgres + pgvector · model provider adapters · Vitest · Playwright