Finally, rewards for everything fans actually do. Watch every match, from the couch or the pub. Buy the sponsor's products. Show up on away-day. Rep your team from London to Sรฃo Paulo. Snap a photo โ our AI does the rest.
For decades, leagues and clubs could only reward the fraction of fans who walked through the turnstile. FanFest rewards everyone โ for what they already do.
Every match, every game, every knockout round. Snap your setup.
Wherever your people gather on matchday, that's a verified moment.
Receipts, cans, packaging. Every QSR, beverage, apparel, travel, and finance SKU โ tied to the fan who bought it.
Your scarf up in Milan, your jersey at the bar in Mexico City, team flag in Berlin. Geofenced, verified, rewarded.
Match ticket โ hotel stay โ first drink at the pub โ local merch. The full trip, credited.
Every article, podcast, video, app open. The channels you already run; the silos come down.
Your club, your sponsors, local businesses โ all plugged into one HQ, showering fans with things they actually want.
Coupons, discounts, free swag at the ground.
Interactive press conferences with your favorite players, brought to you by a team sponsor.
Watched every match of the run-in? HQ notices. You get picked to record a hot take that airs on the club channel before the decider.
Away-day ticket โ hotel stay โ first drink at the pub free โ clear the tab, bonus card points โ walk into the ground already on the leaderboard.
FanFest AI
Frontier multimodal models, a custom sports-tuned verification harness, and a multi-signal fusion pipeline that turns a single fan photo into structured, deduped, location-verified signal โ routed back as XP in seconds.
A single submission isn't just a photo. The harness fuses the image, client-reported device GPS (with accuracy), EXIF metadata (capture date, camera make/model, software, GPS, ISO), server-side EXIF re-extraction, and Netlify IP geolocation โ then runs them through the multimodal model against per-milestone validation rules. Out comes a structured verdict: vendor, amount, currency, date, venue markers, sponsor brand, and a confidence-weighted call. โฅ0.85 auto-approves. 0.65โ0.84 goes to review. Below that, the fan gets specific feedback and a retry.
7+ input signals fused per submission ยท GPS โ EXIF (24-hour recency window) โ IP triangulation ยท JSON-schema-enforced structured output ยท 3-tier confidence verdicts.
Every uploaded image gets a cryptographic fingerprint. A proof registry โ keyed per fan, per profile โ rejects any photo that's been submitted before, anywhere in the quest. Combined with the 24-hour EXIF-recency window and the IP/GPS cross-check, it's effectively impossible to game a milestone by recycling an old photo, a friend's photo, or a screenshot off the internet.
sha256(buffer) per submission ยท proof registry with O(1) duplicate check ยท recency-gated EXIF GPS ยท device-GPS-primary location chain ยท per-submission dedupe at ingest time.
Operators write one sentence โ "fans who buy a team jersey on matchday" โ and the AI returns a complete, production-ready milestone: title, description, 3โ5 step-by-step instructions, validation expectations, AI guidance, 2โ3 proof examples, category, timing window, geofence (point+radius for venues, ISO country codes for regions), and sponsor brand routing. Brand keys are auto-validated against a hardened allowlist. Hallucinated sponsors get dropped before they ship.
generate-milestone.mjs ยท JSON-schema output ยท geofence auto-emission gated on broadcast vs. physical-presence tasks ยท brand-enum allowlist sanitization ยท 2000-token structured spec per prompt.
The moment an operator saves a milestone, the AI translates title, description, instructions, validation expectations, AI guidance, and proof examples into 10 locales โ Spanish, French, Portuguese, Italian, German, Greek, Japanese, Mandarin, Korean, Arabic. Placeholders and sponsor brand names are preserved. A fan in Sรฃo Paulo earns XP in Portuguese, in Seoul in Korean โ same milestone, same instant, same ledger.
translate-milestone.mjs ยท flat-key translation preserving array indices and placeholders ยท 10 target locales ยท batch + runtime share one pipeline ยท sponsor-name allowlist guard.
Custom harness. ~965 lines of E2E pressure tests โ brand classification, geofence triangulation, reward routing, milestone composition โ run against live production milestones before anything ships.
Sports-native, not generic. Tuned on team kits, sponsor SKUs, venue markers, and matchday moments โ not a wrapper around an off-the-shelf vision API.
Opt-in, fan-submitted, privacy-first. Nothing scraped, nothing silent โ the AI only sees what a fan chose to share.
From the fan's seat
Team gear in Dublin, Berlin, Mexico City. Your jersey on at the bar in Sรฃo Paulo. Miles from the stadium โ still on the leaderboard.
Player meet-and-greets replayed for fans at home. Concerts and festival activations streamed, anywhere in the world.
Fan clubs, chat channels, conversations with creators, podcasters, and fellow fans โ any language, any time zone.
Every article. Every podcast. Every match, home or away. Every check-in with your club between matchdays. Same behavior โ now it pays back.
Same fandom. New ledger.
Powering fan engagement for leagues, clubs, federations, and the brands around them.
Reward fans for matches attended, merch bought, sponsor activation hit, and content consumed โ across every channel.
Drive attendance, sponsor activation, and global participation across festivals, drafts, finals, and tours.
Verified receipts, apparel in-the-wild, and category-level fan signal โ closed-loop proof your activation worked.
Track in-game achievements, watch-party attendance, and real-world meetups. Superfans visible at last.
Reward creators and fans for content, conversation, and community-building โ inside the walled garden you own.
Connect fans through releases, tours, and exclusive drops. Same XP ledger, same HQ.