Sports data / SEO / botlou

ufa almanac

An independent statistical reference for the Ultimate Frisbee Association, covering every player, every game, and every stat from 2012 to the present.

status: New · Reference site
role: Solo build
domain: tba
CategorySports data / SEO
StatusNew · Reference site
Coverage1,900+ games, 2012–2025
Sectionsseasons, teams, players, records, head-to-head
Data sourceUFA Stats API (used with permission)
Built byUnbenchable
live site preview ufa-almanac site preview

the story

UFA Almanac exists because the historical information about the league was almost impossible to find in one place. Season standings, playoff results, career totals, franchise lineage — the pieces were scattered across old pages, broken links, and live-only feeds. As someone who had played the game at the highest level and then built a fantasy product around it, the frustration of not being able to just look things up was enough to start a separate site.

The Almanac is a reference site, not a product. No accounts, no game state, no transactions. It catalogs every UFA player, every game, and every stat from 2012 onward, tracks franchise identity across rebrands, and documents the methodology openly on an about page. The visual direction is deliberately monospace and austere — this is supposed to read like a reference, not a pitch.

It is also a sister project to Unbenchable. The two share a data foundation and the same operator, but they are different products on purpose: one is the playable game, the other is the public record. Keeping them separate means the Almanac can stay fast, free, and linkable forever, which is the whole point of a reference site.

recent updates
Apr 2026 · Operations

The 2026 season ingest path is ready before the season starts

The backfill and ticker pipeline are prepped for the incoming season, with the cron job auto-detecting the current year instead of relying on a hard-coded one-off. That is boring infrastructure, but it is exactly what keeps a stats site from turning brittle.

  • current-year ingest activates automatically as fresh data appears
  • activation checklist is documented in STATUS.md
  • the site is set up to roll into the new season without a scramble
Apr 2026 · Season views

Built an MVP Chase leaderboard for the whole season

There is now a dedicated /seasons/[year]/mvp-chase page ranking the top 50 players by cumulative Flexecutioner score. It gives the site an always-on season narrative instead of making awards feel trapped inside individual game pages.

  • tracks cumulative score, games played, average, and best single-game mark
  • includes per-award win counts for context
  • updates weekly as new games land
Apr 2026 · Player pages

Player profiles now show career award totals

Each player page has a second KPI strip for award history, so the site can answer the obvious follow-up question: not just “what happened tonight?” but “how often has this player actually won things?”

  • career counts for Flexecutioner, O-POTG, D-POTG, and People’s MVP
  • computed retroactively across the full game history
  • no manual historical backfill required to make old pages feel complete
Apr 2026 · Fan layer

People’s MVP voting is live

Fans can now pick their own MVP for each game, and the result is not just a vanity button. The vote is auth-gated, one-per-user, changeable, and folded into the same award and branding system as the editorial awards.

  • one vote per user per game, with edits allowed
  • live bar-chart results with vote percentages
  • built to resist obvious ballot stuffing without making the flow annoying
Apr 2026 · Auth

Added magic link authentication

Sign-in is now passwordless and email-based through Resend. It is a nicer user experience, but the more important thing is that it makes voting and account-gated features viable without dragging the project into full auth-system bloat.

  • one-click login links stay valid for 15 minutes
  • sessions persist for 90 days after sign-in
  • preview deploys correctly link back to themselves, which matters for real testing
Apr 2026 · Monetization

Built a multi-sponsor award system instead of hard-coding one sponsor everywhere

The award layer is now a reusable sponsor registry, which means each slot can carry its own brand treatment without forking templates or manually touching share copy. That turns awards into actual inventory instead of decorative text.

  • separate sponsor slots for Flex, O-POTG, D-POTG, and People’s MVP
  • slot-specific accent colors for card identity and scanability
  • single-config sponsor swaps propagate across cards, OG images, and share text
Apr 2026 · Awards

Added offensive and defensive player of the game

The Almanac no longer stops at a single flex-style MVP. Each game can now name an O-POTG and D-POTG, which makes the site feel much closer to the sport instead of flattening every performance into one blended score.

Highlights on calculating the awards:

  • O-POTG is built to reward both throwers and finishers, so the model values goals, assists, hockey assists, completions, hucks, and yardage instead of just raw scoring totals
  • D-POTG gives callahans a real premium, rewards break-point plays and opportunity stops, and even tracks pull hangtime so defensive impact is not reduced to blocks alone
  • both awards include penalties for empty or harmful plays — things like throwaways, drops, stalls, and out-of-bounds pulls — so the winners feel earned instead of inflated
  • badge logic adds context to the selection with tags like perfect handler, huck city, dime dropper, the wall, shutdown, ironman d, and clean pull
Apr 2026 · Platform

Custom domain, branded 404, and a real SEO pass

The whole site now lives under www.ufaalmanac.com with the metadata layer cleaned up properly instead of feeling like an afterthought. Canonicals, sitemap coverage, robots.txt, JSON-LD, and OG tags all got tightened so the public record can actually be found.

  • migrated all canonical URLs and metadata to the live domain
  • validated coverage across all 17 pages, including dynamic routes
  • added a branded 404 with a fake stat line, Combat Candy sponsorship, and recovery nav