Project
Saturday Signal
Open source
A source-grounded college-football intelligence product, built as a reusable team platform with a Texas reference deployment.
- Next.js
- TypeScript
- Drizzle
- RAG
- Playwright
Problem
College football fans want fast context before a game. The available signal is scattered across schedules, game notes, official links, data feeds, and rumor-heavy commentary. Saturday Signal explores a cleaner product boundary: a team-aware assistant that can brief a fan from trusted sources, cite what it knows, and stay honest when the current source set is thin.
Product Boundary
The first MVP ships with Texas football as the reference deployment while keeping the platform shaped for future teams. Team identity, source policy, voice, protected-mark guidance, colors, aliases, and suggested prompts live in typed configuration. The product avoids official logos, mascot branding, and affiliation language, which keeps the project legally cleaner and forces the experience to stand on source quality instead of borrowed brand equity.
Architecture
The Next.js app exposes a root Texas deployment and a canonical /teams/texas-football route, plus API routes for health, ingest, and chat. The ingest pipeline combines committed schedule fixtures, sample team notes, official links, and an optional CollegeFootballData adapter when CFBD_API_KEY is present. Source documents are normalized, de-duplicated, chunked, and retrieved with deterministic term and phrase scoring before the chat layer asks a provider for an answer.
Guardrails
The chat path carries citations, freshness text, confidence, provider metadata, and a mode for every answer. Rumor, injury, betting, and message-board questions route through a static guardrail response instead of laundering untrusted claims. If a live LLM provider is unavailable, the app falls back to a deterministic mock provider so the product still returns a grounded answer from the retrieved context.
Quality Bar
The release check combines lint, typecheck, unit tests, voice evals, build, ingest, and Playwright e2e coverage. Offline fixtures make the core flow runnable without private keys. Database smoke tests cover Drizzle migrations and seeding for teams, games, source documents, chunks, sessions, messages, and citations, including the expected warning path when the live CFBD key is absent.
Stack
Next.js 16 · React 19 · TypeScript · Tailwind CSS v4 · Drizzle · Postgres + pgvector · Anthropic/OpenAI adapters · Vitest · Playwright