Matchmaker

The /matchmaker/ route uses the existing Jekyll layout and main navigation. It requires no server or new dependencies.

Run and verify

Run node scripts/update-matchmaker.mjs to fetch official data, then node scripts/check-matchmaker.mjs for the deterministic-engine regressions and real-card checks. The scheduled Update Matchmaker data workflow runs twice daily and supports manual dispatch. Collection fails closed if the roster, divisions, event results, or profile coverage fails validation; the last valid snapshot stays published.

assets/matchmaker-engine.js is a reusable browser/CommonJS engine. scripts/matchmaker/sources/ufc.mjs holds the official UFC event, rankings, and profile adapters. The existing site’s canonical roster release, upcoming schedule, and portrait registry are reused. No visitor triggers source scraping. The browser reads the normalized JSON from the main branch, with the bundled Pages JSON as a fallback, so data-only bot commits do not require another Pages deployment.

Data and limitations

Boards and prediction records

Working boards, undo, overrides, and frozen snapshots are stored on the visitor’s device. Freezing makes an independent copy; subsequent changes do not alter it. Share URLs encode a validated working copy. JSON exports retain full reasoning and timestamps. The PNG export is 1080×1350 and uses text rather than cross-origin portraits so canvas exports remain reliable.

Official booking observations are retained across updates, even after the scheduled event passes. Frozen boards report matches first observed after their timestamp. This is collector observation time, not independently verified announcement time. Device-local timestamps and share URLs are not public, tamper-proof predictions. Site-wide editorial hit rates require a committed prediction archive; this version does not manufacture one or pool visitor data.

The source adapters are designed to be extended with UFC Stats or other verified history sources later. They deliberately do not silently fall back to synthetic records if a source blocks access.