What's New

The latest features and improvements shipped to Picklebeast.

May 2026
May 11, 2026 Mobile App
Scouting Report — Know Your Opponent Before the First Serve
A binoculars icon on every casual game, tournament pool, bracket, and league match opens a quick-glance intel panel about the opponent: DUPR + trend, recent form, hot/cold streak, head-to-head, mutual friends, common opponents. Built on data the opponent already exposes publicly. Minor-protected, block-honored, scout-views never surfaced to the scoutee.
  • Contextual entry — the icon appears only on competitive contexts (casual games, tournament pools, brackets, league matches); not on Player Hubs or feeds
  • Two visibility tiers — public stats (DUPR, form, streak, H2H, badges) visible to anyone; social-graph signals (mutual friends, top partners, top opponents, common opponents) visible only to confirmed friends
  • Built on existing data — no new aggregation tables, no scout-view rows; aggregates PlayerStatsService + DuprRatingSnapshot + Friendship in a single cached read
  • Per-context shapes — tap a player avatar for an individual report; tap a doubles team chip for a team report with combined DUPR, chemistry, and team H2H
  • DUPR trend — 90-day delta vs the most recent snapshot, fires when the swing is ≥ 0.10
  • Hot/cold streak — fires when last 3+ matches are all wins or all losses
  • Reuses EventFollow polymorphic infrastructure — Follow button uses the existing 5/hour digest-capped notification; no new model, no new endpoints
  • Minor-safe — minors are never scoutable; the icon renders a generic 'not available' shell
  • Block-honored — blocking party gets the same shell as a minor account; block existence never leaked
  • Scout-view privacy posture — analytics events are scrubbed of (scouter, target) joinability; the scoutee can never determine who scouted them
  • AI integration — ask the in-app AI 'Scout Jamie' or 'Tell me about Jamie before my match' and get the same report card with deterministic narration
  • Tier-aware from day 1 — `for_tier(:free | :premium)` filter built in; flipping the future paywall is a one-line tier-config change, no service code change required
Learn more →
May 11, 2026 Tournaments
Rating-Sync Registration Gates — DUPR & Club Rating Required
Hard-block registration unless the player has synced their DUPR or has a club-issued rating. Tournament/league-wide defaults cascade to every division; each division can override. Pre-flight badges on public event pages so players know the requirement BEFORE they click Register.
  • Two gates: Require DUPR sync (every tier) and Require Club Rating (Pro+ tier)
  • Parent-level defaults on the tournament/league create form cascade to every new division via the set_defaults / inherit_registration_gate_defaults callbacks
  • Per-division override checkbox in compact + wizard forms, both web and mobile
  • Public event pages show DUPR required / Club rating required pre-flight badges next to the capacity pill — players see the requirement BEFORE clicking Register
  • Backend DivisionGateService enforces on every entry point — web, mobile API, AI chat — returning a 403 with division_gate_failed: true + remediation URL
  • Platform-owner override — Scott can comp the Club Rating gate for any club regardless of subscription tier
  • AI Schema Registry surfaces both gates on tournament, league, and tournament_division entries so AI prompts like 'make this DUPR-required' work
  • Mobile parity — tournament + league division edit screens hydrate from the new club_rating_available API flag and grey out the Club Rating toggle for ineligible tiers
  • Demo seed sets DUPR-sync default ON for the multi-division showcase tournament so a fresh demo reset surfaces the new badges
Learn more →
May 9, 2026 Tournaments
Team Cup — Captain-Driven Tournaments with Combine, Buffer Review & Captain-Pays Bundles
A new tournament format combining a DUPR-screened combine with invite-only Pro Team-Captain divisions and standard amateur divisions. Captains form rosters, share invite links with teammates, and pay for everyone in one Stripe charge. Built for the Washington Cup (Jun 26, 2026).
  • Three division kinds in one tournament — Combine, Pro Team-Captain (invite-only), and standard amateur
  • Captain-pays bundle — one Stripe Connect PaymentIntent for N teammates with reverse_transfer + refund_application_fee:false on per-line refunds
  • Click-through legal acknowledgment — pre-beta legal review required; teammates ack non-refundability of platform fees + captain-card refund flow before chat access
  • Atomic round publish — org draws bracket privately; click publish locks lineups + materializes per-seed pairings + fans out push, all in one transaction
  • Pre-publish privacy invariant — pairings hidden until publish on every API endpoint (closed two parallel-controller leaks during hardening)
  • Buffer-flag review queue — combined-DUPR over cap+buffer triggers org review (approve / reject-with-refund / allow-reform)
  • Find-a-team discovery — players browse public-join teams whose MLP rules they fit
  • Lineup deadline reminders — hourly Sidekiq job pushes captains who haven't submitted, with per-team dedup
  • Hardened end-to-end — 5 audit pushes, 25 rounds, 42 production bugs found and fixed before launch
Learn more →
May 8, 2026 Mobile App
Player Hub — Your Pickleball Identity, Wherever You Play
A single shareable URL — your Player Hub — where fans, friends, and opponents can follow you, see your career stats and DUPR rating history, react to your wins, message you directly, and find you in club discovery. Visibility you control. Verified badges for elite players. Embed a follow widget on your club's website.
  • One-URL identity — picklebeastpickleball.com/players/your-handle on web, deep-linked native screen on mobile
  • Career stats — match count, win-rate, current streak, partner count, tournaments + leagues, member-since
  • Activity feed — every match, badge, award, registration, streak milestone, club join with kudos reactions (🔥 👏 🏆 💎) and 1-level threaded comments
  • Persisted DUPR rating-history — real chart of singles + doubles ratings over time, captured every time DUPR syncs
  • Stats deep-dive — format breakdown, top partners, top opponents, day-of-week heat map, head-to-head record
  • Three visibility levels — public / friends-only / private — applied across profile, activity, stats, comments, and discovery
  • Block is a hard wall — 404 across blocks at every gate (profile, follow, DM, suggestions, search, leaderboard widgets)
  • Direct messages with a Requests inbox — strangers' first DM lands in Requests, not your main inbox
  • Verified-badge admin UI for elite/sponsored players, set by platform owners with audit trail
  • Embed widget — drop a Follow Sarah card on any external site with one line of HTML; iframe-safe, public, anonymous
  • Minor-safe by default — minors auto-private with first + last initial only on public surfaces
Learn more →
May 8, 2026 Club Admin
Kids Camps — Multi-Day Summer Programs
Run kids' summer camp programs end-to-end on Pro and Elite plans: registration, pickup PIN, daily check-in/out, encrypted medical profiles, photo consent, immutable waivers, daily challenges, badges, streaks, and a parent-side passport that carries across sessions.
  • Three-level hierarchy — Camp (program template) → CampSession (specific week) → CampDay (auto-created daily curriculum)
  • Two-actor model — parent is the user, camper is a sub-record (no kid login; COPPA-safe)
  • Encrypted medical — Rails 7 native encryption on allergies/medications/conditions/physician info; AI surface excluded by forbidden_fields
  • Photo consent triple-toggle — private recap (default ON), group share (default OFF), marketing (default OFF), filtered at recap publish time
  • Pickup security — daily-rotating 4-digit PIN per registration plus a named-list of approved adults; brute-force rate-limited
  • Late-pickup auto-detect — 15 min past daily_end_time in the club's local timezone fires a parent push automatically
  • Per-camp refund policy — full → partial → none windows configurable in days; club-cancelled sessions always 100% refund
  • Engagement loop — Khan/Duolingo-style: daily challenges, XP, level transitions (Beginner/Rookie/Pro/All-Star/MVP), streak counter, badges, virtual passport
Learn more →
May 3, 2026 Club Admin
Scheduled Pickup Orders — The Full POS Suite
Real-time kitchen display, walk-up POS at the bar, server mode at the courts, running tabs per reservation, and QR-code pickup verification. Mobile + web admin parity, with cross-tenant guards and idempotency keys built in.
  • Kitchen Display (KDS) on web + mobile, updating in real-time via ActionCable when an order is placed, advanced, 86'd, or refunded
  • Walk-up POS — bartender rings up a customer in seconds; optional member attach for member pricing; idempotency keys on every submit
  • Server mode — roving server taps an active court, picks the player, rings up F&B without leaving the floor
  • Running tabs — server-mode orders accumulate on a per-reservation tab; close at the end of the session via cash, check, or the customer's app
  • QR pickup — when an order goes ready, the customer's app shows a QR; staff scans from the kitchen view to jump straight to the order
  • Cross-tenant guards on every staff write path (member attachment, reservation lookup, scanner) — Club A staff can never bind to Club B data
  • Forward state transitions wrapped in pessimistic locks — concurrent staff taps can't fire receipts or pushes twice
  • Stripe refunds carry idempotency keys — a network blip doesn't double-refund on retry
  • Demo seed creates 30+ multi-item orders, 3 queued intents, and 2 tabs (1 open, 1 closed) so demo clubs preview the full surface
  • Demo seed refuses to run against non-demo clubs — production-safety guardrail prevents accidental real-customer receipt blasts
Learn more →
April 2026
Apr 30, 2026 Leagues
League Sub Pool — Lock In Substitutes Before Game Day
A per-league pool of potential substitutes managed directly by the organizer. Search club members or add free-form contacts (no Picklebeast account required). Queue swaps for any combination of weeks — including weeks whose matches haven't been generated yet — and the substitute is auto-applied when the session runs.
  • Add contacts via club-member search (privacy-scoped to the club's active membership) or by typing a name + email/phone
  • Auto-link to existing Picklebeast accounts when name AND (email OR phone) match — strict to prevent the wrong-person link
  • Phone-based dedupe (digits-only) catches the same person entered with different formatting
  • Queued-swap intents persist before matches exist — per-round rung ladders generate Round 1 with the substitute already in the lineup
  • Multi-week chip selector: pick 1, several, or all weeks in a single confirmation
  • Branded sub-in email + Universal Link 'View Schedule' button (opens the app on mobile, web on desktop)
  • Email preview button — see exactly what the substitute will receive before you confirm the swap
  • Cancel queued swaps from the sub pool index, with a 'sub for X' badge on the rung roster preview for the affected week
  • Push notifications via the existing league_sub_assigned channel when the substitute has the app + push enabled
Learn more →
Apr 28, 2026 Platform
2 Free Events at a Time — Unified Free Tier Pricing
Any user can run up to 2 active small (≤16-player) events at a time for free — leagues or tournaments, any format, any registration mode. The third event charges the platform's standard per-registration fee. Paid Clubs always pay; demo events are excluded.
  • Schedule-driven: the platform owner controls the capacity threshold and the next-tier fee at /platform_owner/fee_schedules — not a hardcoded $5
  • Decoupled from legacy casual restrictions — any league type, any registration mode, public or private, with or without DUPR
  • Tournaments count toward the same 2-cap as leagues (combined active count)
  • Soft cap: the third event is allowed to publish, but every registration is charged the next-tier fee — no hard publish block
  • Stamped at registration time and forward-only — capacity changes mid-season don't retroactively re-bill
  • API: GET /api/v1/me/free_event_slots returns the user's current state for in-app banners
  • AI chat: ask 'is my next league free?' and the AI answers with the user's exact slot count
  • Demo carve-out: any club marked is_demo never enters the free tier (prevents demo data from masking billing)
Learn more →
Apr 25, 2026 Club Admin
Embeddable Leaderboards — Real-Time Standings on Your Website
Drop real-time league and tournament leaderboards onto any club website with one line of code. Branded in your colors. Updates the moment a match score is entered. Free on every plan.
  • Six widget types: league standings, combined leaderboards, tournament brackets, rung ladders, upcoming matches, head-to-head
  • Multiple embeds per club, each independently configured (one for your homepage, one for the leagues page, etc.)
  • Selector UX for multi-entity embeds — tabs, dropdown, sidebar, or auto-rotating carousel
  • Per-embed privacy controls: full name / first initial / first only / opaque (Player 1, Player 2…); hide avatars optional
  • Brand inheritance from your existing ClubEmbedConfig — colors, fonts, logo apply automatically
  • Real-time updates via ActionCable WebSocket + 30s polling fallback for behind-firewall viewers
  • Standalone shareable URL per embed (works in browser tabs, iMessage, Twitter, anywhere)
  • Pause / archive states with optional auto-archive 30 days after a league ends
  • Mobile share button on existing in-app league/tournament screens uses the OS share sheet
  • Free on every tier — no usage limits, no view caps, 'Powered by Picklebeast' footer
Learn more →
Apr 25, 2026 Tournaments
MLP Format — Major League Pickleball Team Tournaments + Leagues
Full Major League Pickleball format support: 4-player teams, men's + women's + 2 mixed sub-matches per matchup, 21-point Dreambreaker on 2-2, organizer-day overrides, and league weekly play. Works across every bracket type (single-elim, double-elim traditional + consolation, round-robin) with no per-bracket configuration.
  • 4-player rosters with gender-aware sub-match generation (Men's Doubles, Women's Doubles, Mixed 1, Mixed 2)
  • Dreambreaker auto-creates as a 5th sub-match the moment teams tie 2-2; first-to-21 with all 8 players
  • Cross-bracket support: single-elim, double-elim (traditional + consolation), round-robin all generate sub-matches automatically when both teams are set
  • League weekly play: team_size=4 division produces MLP matchups every week; playoffs inherit MLP format automatically
  • Organizer-day overrides: Force Finalize, Void Sub-match, Reset Dreambreaker — all require a written reason for the audit trail
  • Mid-tournament substitutions auto-resync sub-match participants to the new roster — no stale references
  • Standings count parent matchups (one win per MLP matchup, not five), DUPR submission targets only the playable sub-matches
  • Roster gap hints on the registration UI: 'needs 1 more woman' instead of generic 'incomplete'
  • Composite indexes on (parent_match_id, mlp_match_type) tuned for the hottest query at 50k scale
  • 120+ specs locking in correctness across services, models, controllers, hardening, and performance
Learn more →