Internal — Dev Team

Competition Engine — Full Operational Spec

Playtomic vs Field: competitive analysis + detailed operational flows for every screen, state, and interaction the dev team needs to build.

v2 — May 19, 2026 Guilherme Fontes V2 Competition Engine
Contents
Competition Lifecycle & Statuses
Every competition moves through these states. Each state changes what the admin sees and can do. Playtomic has a simpler model — Field needs more states to support Draft mode, check-in, and post-event flows.
Status State Machine Backend
DRAFT
REGISTRATION_OPEN
REGISTRATION_CLOSED
CHECK_IN
IN_PROGRESS
COMPLETED
CANCELLED
(can be triggered from any state except COMPLETED)
StatusTriggerAdmin Can DoPlayer Can DoPlaytomic Equivalent
DRAFT Admin saves as Draft in wizard Edit everything, Open Registration, Delete Nothing — invisible to players N/A — Playtomic has no Draft
REGISTRATION_OPEN Admin opens registration or wizard publishes directly Edit details, Add/remove players manually, View registrations, Close registration early Register, pay, view landing page, cancel registration Session created (enrollment period)
REGISTRATION_CLOSED Deadline passes (relative or fixed) OR admin closes manually Add walk-in players, Remove players, Start check-in, Generate first round View details, cannot register (waitlist if enabled) "Enrollment ends" countdown reaches zero
CHECK_IN Admin clicks "Start Check-In" (event day only) Check in players (QR or manual), Add walk-ins, View check-in progress, Close check-in & start Scan QR to check in, self-check-in in app N/A — Playtomic has no check-in
IN_PROGRESS Admin clicks "Close Check-In & Start" or "Generate First Round" Generate rounds, enter scores, manage matchups, view leaderboard, share matchups, fullscreen TV mode View matchups, enter scores (if player-side entry enabled), view leaderboard "Create matchups" → active tournament
COMPLETED Admin clicks "Finish Competition" after last round View final standings, export results, view analytics, repeat/clone competition View final standings, see recap card, share results, view rating change "Finish competition" → podium + leaderboard
i
Playtomic difference: Playtomic effectively only has 3 states (enrollment open → matchups created → finished). No Draft, no Check-In. The CHECK_IN state is a Field-only innovation that solves the "who actually showed up?" problem clubs deal with every event.

Creation Wizard — Step-by-Step
Field's 8-step wizard vs Playtomic's 6-step. Detailed breakdown of what each step does, what needs changing, and how it maps to Playtomic.
Side-by-Side Wizard Steps Backoffice
Playtomic (6 steps)
1 General Info
name, sport, enrollment type, visibility, organizers
2 Date
start/end, recurrence, reg/cancel policies
3 Courts
select courts to block
4 Participants
gender, min/max, skill level restriction
5 Price
per player + benefit group pricing
6 Additional Info
poster, description, prizes (text)
Field (8 steps — with changes)
1 Format & Sport
club, sport, players/team, format cards
2 Details CHANGE
+ recurrence + relative deadline + visibility
3 Courts & Participants
auto/manual + courts + min/max + odd support
4 Competition Rules CHANGE
NEW scoring model (see Section 3)
5 Match Rules
sets/games/tiebreak/golden point
6 Pricing CHANGE
ship member/non-member pricing
7 Landing Page
description, prizes, sponsors
8 Review & Create
summary + Draft / Open Registration
Step 2 Changes: Recurrence + Relative Deadline + Visibility
Critical
A) Add Recurrence section:
  • Options: None (default), Weekly, Biweekly, Custom (every N days/weeks)
  • When set, auto-generate future competition instances as children of a "series" parent
  • New field: competitionSeriesId on competition doc. Series config stored separately
  • On list page: show series icon. On detail: "Part of: Friday Night Americano"
  • Edit actions: "Edit this instance" vs "Edit all future" (Google Calendar pattern)
B) Fix Registration Deadline:
CURRENT (drop this as default)
Registration Deadline: DD/MM/YYYY
PROPOSED (default to this)
Relative Fixed date
2
hours
before start
  • Store as registrationDeadlineMode: 'relative' | 'fixed' + registrationDeadlineValue
  • Default: Relative, 2 hours before start
  • Backend: compute actual deadline = event start minus offset
  • Dropdown units: minutes, hours, days
C) Add Visibility Toggle:
  • Public = shows in discovery, landing page is indexed
  • Private = only accessible via direct link, noindex on landing page
  • Playtomic tooltip says: "Private = visible only for players with whom you share the link"
Step 3 Changes: Support Odd Participants
Critical
  • Remove the even-number constraint on Min/Max Participants
  • When participant count is odd, show a warning (not an error): "Odd number — some players will rest each round"
  • This is how Playtomic handles it — warning, not blocker
  • The resting logic is handled in round generation (Section 6)
Step 6 Changes: Ship Member/Non-Member Pricing
Critical
  • Remove the "Coming soon" tag from the third radio option
  • When selected, show: Member Price (EUR) + Non-Member Price (EUR)
  • Backend: check player's membership status against club's member list at registration time
  • Playtomic goes further with "benefit groups" (multiple tiers) — for V1, member/non-member is enough
FREE
EUR 0
PAID (SINGLE)
EUR 10
PAID (TIERED) ← BUILD THIS
Member
EUR 8
Non-member
EUR 12

Competition Rules — New Scoring Model
Drop Field's current "Win/Loss points" vs "Cumulative game points" ranking modes. Adopt Playtomic's simpler, more intuitive model: configurable points-per-game and leaderboard sort order.
!
Breaking change: This replaces the current Step 4 (Competition Rules) entirely. The current model with "Ranking Mode: Win/Loss points | Cumulative game points" is confusing for club organizers. Playtomic's model is what they already understand.
Step 4 — Competition Rules: Current vs Proposed REPLACE
CURRENT FIELD (drop this)
Pairing ModeRandom | Balanced (snake-draft)
Ranking ModeWin/Loss points | Cumulative game points
If Win/Loss:Win points (configurable) + Loss points (configurable)
Problems:
  • "Ranking Mode" is abstract — organizers don't think in these terms
  • No points-per-game config (12/24/32 etc.)
  • No leaderboard sort order control
  • No Individual/Team toggle
  • Only 2 pairing options
PROPOSED (adopt Playtomic model)
ModeIndividual | Team
Points per Game12 | 24 | 32 | Custom
Leaderboard SortTotal points, then wins | Total wins, then points
Pairing ModeRandom | Balanced | Skill-matched | Strongest first
Why this is better:
  • Organizers know "12-point Americano" — it's the language they use
  • Sort order is concrete: "do points or wins matter more?"
  • Individual/Team toggle covers singles + doubles cleanly
  • 4 pairing options including Glicko-2 skill-matched (Field advantage)
New Step 4: Competition Rules — UI Mockup BUILD THIS
Step 4 of 8 — Competition Rules
Mode
Individual Team
Individual: each player plays with different partners each round. Team: fixed pairs throughout.
Points per Game
12
24
32
Custom...
Total points played per game. In a 12-point game, if Team A scores 7, Team B gets 5.
Leaderboard Sort
Total points first, then wins
Players ranked by accumulated points. Wins break ties. Best for Americano.
Total wins first, then points
Players ranked by number of wins. Points break ties. Better for Mexicano.
Initial Pairing
Random
Fully random teams
Balanced (snake)
Alternating pick by rank
Skill-matched
Glicko-2 balanced teams
Field only
Strongest first
Top players on Court 1
This sets the first round. Subsequent rounds use format-specific logic (Americano = random rotation, Mexicano = standings-based).
Data Model for New Competition Rules
Backend
Replace current fields:
// OLD (remove)
rankingMode: 'win_loss_points' | 'cumulative_game_points'
winPoints: number
lossPoints: number
pairingMode: 'random' | 'balanced'

// NEW (adopt)
competitionMode: 'individual' | 'team'
pointsPerGame: 12 | 24 | 32 | number  // custom
leaderboardSort: 'points_then_wins' | 'wins_then_points'
pairingMode: 'random' | 'balanced' | 'skill_matched' | 'strongest_first'
  • competitionMode: Individual = new partner each round (Americano). Team = fixed pairs (Mexicano team variant).
  • pointsPerGame: Total points in each game. When entering scores, Team A + Team B must equal this. Enables auto-sum.
  • leaderboardSort: Primary sort key for standings. Secondary is always the other metric.
  • pairingMode: Only applies to round 1 (initial draw). Subsequent rounds follow format-specific rules.
  • Migration: Map existing rankingMode: 'win_loss_points' to leaderboardSort: 'wins_then_points' and 'cumulative_game_points' to 'points_then_wins'. Default pointsPerGame: 12 for all existing competitions.

Format Coverage — 2 Built, 5 Spec'd
Playtomic: 3 tournament formats + 1 league format. Field: 7 formats spec'd, 2 built.
Competition Formats — Build Status
🔄
Americano
Rotating partners, individual
Built
📊
Mexicano
Pairs by standings
Built
👑
King of the Court
Winners stay on
Spec'd
🪜
Ladder
Challenge up
Spec'd
📦
Box League
Groups + promotion
Spec'd
🏆
Single Elimination
Bracket tournament
Spec'd
🔁
Round Robin
Everyone plays everyone
Spec'd
Football7
Coming soon (sport)
Later
Playtomic: Only Americano, Mexicano, King of the Court for tournaments. Leagues (Box League) are a separate product with a separate 9-step wizard. No Ladder, no Single Elimination, no Round Robin. Field with 7 unified formats is a major differentiator.

Player Management
How players get into a competition — self-registration, admin-added, walk-in — and how the admin tracks payment status. Playtomic has a basic version of this. Field needs to go deeper.
Playtomic — Players Tab (what they have) Reference
#PlayerGenderPricePaymentEnrolled
1👤 Maria SilvaFEUR 10Credit cardMay 12
2👤 Joao SantosMEUR 10CashMay 13
3👤 Pedro CostaMEUR 10UnpaidMay 14
Add player: Search existing customers OR "Create new customer" button. Payment tracked manually (Unpaid / Cash / Credit card toggle per player).
Field — Player Management (what to build) BUILD THIS
How players enter a competition:
1. Self-Registration
Player finds competition on landing page or app, clicks Register, pays (if applicable). Appears automatically in admin's player list.
Built
2. Admin Adds Player
Club Admin or Field Admin searches by name/email/phone. Selects from existing users. Sets payment status manually.
Needs work
3. Walk-In (Event Day)
Quick-add with name + phone number. If phone matches existing Field user, auto-link. If not, create provisional player. Available during CHECK_IN and REGISTRATION_CLOSED states.
Not built
Admin "Add Player" drawer:
Add Player
🔍 Search by name, email, or phone...
Search results show: name, avatar, phone, membership status (Member/Non-member badge), Glicko-2 rating if available
Maria Silva
+351 912 345 678 · Member · Rating: 1250
+ Add
Payment Status:
Unpaid Cash Card MB WAY
Walk-in shortcut: If player not found, show "Create walk-in player" — just name + phone. No account creation needed.
Player list table columns:
#PlayerMembershipRatingPricePaymentSourceCheck-inActions
1 👤 Maria Silva
+351 912 345 678
Member 1250 EUR 8 Card Self
2 👤 Joao Santos
+351 917 654 321
Non-member 1180 EUR 12 Cash Admin
3 👤 Pedro Costa
+351 926 111 222
Non-member EUR 12 Unpaid Walk-in
Actions menu (⋮): Change payment status, Remove player, View profile. During CHECK_IN: manual check-in toggle.
Source column: Self = self-registered via app/landing page. Admin = added by club/field admin. Walk-in = added on event day.
Check-in column: Only visible when status = CHECK_IN or later. Shows green check or dash.
Field Admin vs Club Admin: Both can add players. Field Admin sees all clubs' competitions. Club Admin sees only their club's.
Waitlist (when max participants reached)
Differentiator
  • When max participants is reached, registration button changes to "Join Waitlist"
  • Admin sees a separate "Waitlist" section below the player list
  • If a player cancels, first waitlisted player gets a push notification + 2-hour window to confirm
  • If they don't confirm, auto-promote next waitlisted player
  • Playtomic has NO visible waitlist management

Round Generation & Matchups
How the admin creates rounds, how players are paired, and how courts get assigned. This is the core of the competition engine runtime.
Playtomic — Matchup Creation Flow (reference) How they do it
STEP 1: Select Game Type
Drawer with 3 options: Americano, Mexicano, KoC. Each with Details tooltip.
STEP 2: Format Config
Individual/Team, Scoring (12/24/32/custom), Leaderboard sort order.
STEP 3: Initial Draw
Manual drag OR "Fill automatically" with pairing options (strongest/even/random).
STEP 4: Summary
Matchup count, active teams, resting teams, left-out players.
Key issue: Playtomic does format + scoring config at matchup time, NOT during creation. This is backwards. Field already solved this by putting it in the creation wizard (Step 4). But Playtomic's matchup generation UX (draw step + summary) is good — we should adopt that.
Field — Round Generation Flow (what to build) BUILD THIS
Trigger: Admin clicks "Generate Round" button on active competition view
ROUND 1 (Initial Draw)

Uses the Pairing Mode set in wizard Step 4:

  • Random: Shuffle all players, assign to courts randomly
  • Balanced (snake): Sort by rating (or seed), snake-draft pairs across courts
  • Skill-matched: Use Glicko-2 to create evenly balanced teams per court
  • Strongest first: Highest-rated players on Court 1, descending

If odd number of players: system selects who rests (lowest-rated for strongest-first, random for random mode).

ROUND 2+ (Format-Specific)

Pairing depends on the format:

  • Americano: Random rotation — new partner each round. Avoid repeat pairings (Swiss-system logic).
  • Mexicano: Standings-based — #1 pairs with #2 vs #3 with #4, etc. Leaderboard drives matchups.
  • KoC: Winners stay on court, challengers rotate in from queue.

Resting players rotate fairly — track rest count, prioritize players who've rested least.

After generation — review before confirming:
Generate Round 3 — Preview
Court 1Padel A
Maria + Pedro
1250 | 1180 avg
VS
Joao + Ana
1220 | 1190 avg
Court 2Padel B
Rui + Sara
1100 | 1150 avg
VS
Tiago + Ines
1090 | 1140 avg
Resting1 player
Bruno Costa
Rested 0 times so far
Drag players between courts to manually adjust. Or:
🔄 Re-shuffle ✓ Confirm & Start Round
Key features: (a) Preview before confirming — admin can drag players between courts to manually override. (b) Re-shuffle button to regenerate. (c) Resting players shown explicitly with rest count. (d) Average rating per team shown (Field advantage over Playtomic). (e) "Confirm & Start Round" locks the matchups and allows score entry.

Active Competition View
What the admin sees when the competition is IN_PROGRESS. This is the main screen during an event — round navigation, court cards, leaderboard, and action buttons.
Active Competition — Admin View (build this) BUILD THIS
Friday Night Americano · Americano · 12 pts · 9 players
Round 3 of 5 In progress
💬 Share Matchups 📋 Duplicate Round 📺 TV Mode + Generate Next Round
Court 1 — Padel AScore entered
Maria + Pedro
VS
Joao + Ana
7
5
Court 2 — Padel BAwaiting score
Rui + Sara
VS
Tiago + Ines
Resting this round: Bruno Costa (rested 1x) Next round: will play
Leaderboard (live)
→ Full leaderboard details in Section 9
i
Playtomic comparison: Playtomic has a similar layout (round nav + court cards + leaderboard). Key differences: (a) Playtomic shows no per-court status badges (score entered vs awaiting). (b) No resting player info next to rounds. (c) No "Generate Next Round" button — they use "+ Add round" which is less intuitive. (d) No "Share Matchups" or "TV Mode" buttons in the same toolbar. Field should combine the best of both into this unified view.
Share Matchups (copy from Playtomic)
HighCopy
What happens when admin clicks "Share Matchups":
  • Option 1: Share to competition chat — formatted message: "Round 3 — Court 1: Maria + Pedro vs Joao + Ana | Court 2: Rui + Sara vs Tiago + Ines | Resting: Bruno"
  • Option 2: Copy to clipboard — same text, for pasting in WhatsApp. Most Portuguese clubs still use WhatsApp groups
  • Option 3: Push notification — send to all registered players' phones

Result Entry
Two flows: admin enters scores from the backoffice, or players enter from their phones. Playtomic only supports admin entry. Field should support both.
Admin Score Entry (backoffice)
Enter Result — Court 1
Maria + Pedro
7
of 12
Joao + Ana
5
auto-calculated
Save Result
Auto-sum: Admin enters one score, other is auto-calculated (12 - 7 = 5). Copied from Playtomic — prevents entry errors. Admin clicks court card to open this modal.
Player Score Entry (mobile app) Field only
📱 Player's phone
Your match — Court 1
Us
7
-
Them
5
Submit Score
Confirmation flow:
  1. Player A submits 7-5
  2. Player B (opponent) gets push notification: "Maria submitted 7-5. Confirm?"
  3. If confirmed → score is final, leaderboard updates
  4. If disputed → flagged for admin to resolve
  5. If no response in 15 min → auto-confirmed
Playtomic has NONE of this. All score entry is organizer-only. Player-side entry is a massive UX win for events with many courts.

Leaderboard & Standings
What columns the leaderboard shows, how it sorts, and how it handles ties. Playtomic's leaderboard is basic (rank, name, matches, wins, points). Field should go deeper.
Playtomic Leaderboard
#PlayerMWPts
1Maria Silva4338
2Joao Santos4335
3Pedro Costa4231
M = Matches, W = Wins, Pts = Total points. That's it — no differential, no form, no rating.
Field Leaderboard (build this)
#PlayerMWLPts+/-Form
1Maria Silva ↑243138+14W W W L
2Joao Santos43135+10W L W W
3Pedro Costa ↓142231+2W W L L
+/- = point differential. Form = last 4 results. Arrows = position change since last round.
Leaderboard Column Spec
Spec
ColumnWhat it showsSort behaviorPlaytomic has?
#Rank positionDerived from primary sortYes
PlayerName + avatar + position change arrow (↑2, ↓1, —)Name + avatar only
M (Matches)Total matches playedYes
W (Wins)Total winsPrimary sort if wins_then_pointsYes
L (Losses)Total lossesNo
Pts (Points)Total accumulated points across all gamesPrimary sort if points_then_winsYes
+/- (Differential)Points scored minus points concededTiebreaker #2No
FormLast 4 results as W/L indicators— (visual only)No
Tiebreaker order:
  1. Primary sort metric (points or wins, per leaderboardSort config)
  2. Secondary sort metric (the other one)
  3. Point differential (+/-)
  4. Head-to-head result between tied players
  5. If still tied: same rank, alphabetical
Live updates: Leaderboard recalculates after every score entry. Uses Firestore onSnapshot for real-time on both admin and player views.

Post-Competition
What happens after admin clicks "Finish Competition." Playtomic shows a basic podium. Field should do more.
Playtomic (what they show)
  • Completion summary: status, rounds, players, matchups
  • Podium: 1st/2nd/3rd with avatars and points
  • Full leaderboard table
  • That's it — no analytics, no rating changes, no recap cards, no share, no "repeat"
Field (what to build — phased)
Phase 1 (ship with V2):
  • Podium visualization (1st/2nd/3rd, same as Playtomic)
  • Final leaderboard with all columns from Section 9
  • Summary stats: rounds, total matches, total players
  • "Repeat Competition" button (clone with new date)
Phase 2 (post-V2):
  • Recap card per player: position, points, rating change (Δμ), intensity
  • Glicko-2 rating update display: "Your rating: 1250 → 1268 (+18)"
  • Share CTA — shareable image card for Instagram/WhatsApp
  • Badges earned during competition
Phase 3 (later):
  • Monthly/seasonal wrapped recaps
  • Competition analytics tab for admins

Priority Actions — Summary
All changes organized by priority. Each references the section where the full spec lives.
Critical (ship blockers)
1. Replace Competition Rules with Playtomic Scoring Model
Critical→ Section 3
Drop "Win/Loss points vs Cumulative" ranking modes. Adopt: Individual/Team toggle, Points per Game (12/24/32/custom), Leaderboard Sort (points-first vs wins-first), 4 pairing modes including Glicko-2 skill-matched. Full UI mockup and data model in Section 3.
2. Add Recurrence + Relative Deadline + Visibility
Critical→ Section 2
Three changes to Step 2: (a) Recurrence: none/weekly/biweekly/custom. (b) Registration deadline: relative mode default (N hours/days before start). (c) Public/Private visibility toggle. Full spec and mockups in Section 2.
3. Support Odd Participants
Critical→ Section 2, 6
Remove even-number constraint. Warning (not error) when odd. Resting player logic in round generation — track rest count, rotate fairly. Resting callout on active view.
4. Ship Member/Non-Member Pricing
Critical→ Section 2
Remove "Coming soon." Show Member Price + Non-Member Price when tiered pricing selected. Backend checks membership at registration time. Mockup in Section 2.
High Priority (competitive parity)
5. Auto-Sum Scoring
HighCopy Playtomic→ Section 8
Enter one team's score, other auto-calculates (pointsPerGame - entered = other). Works because we now have a fixed pointsPerGame value. Mockup in Section 8.
6. Round Generation with Preview
High→ Section 6
Generate round → preview court cards with team assignments → allow drag to manually adjust → re-shuffle button → confirm. Show resting players with rest count. Full mockup in Section 6.
7. Enhanced Leaderboard
High→ Section 9
Add columns: Losses, Point Differential (+/-), Form (last 4 W/L), Position Change arrows. Implement tiebreaker chain. Live updates via Firestore. Column spec in Section 9.
8. Share Matchups
HighCopy Playtomic→ Section 7
Button on round toolbar: share to competition chat, copy to clipboard (WhatsApp), or push notification. Pre-formatted with court assignments + resting players.
9. Walk-In Quick-Add
High→ Section 5
Name + phone minimum. If phone matches existing user, auto-link. Available during CHECK_IN and REGISTRATION_CLOSED. Add Player drawer mockup in Section 5.
10. Templates & Quick Create
High
Already spec'd. "Save as Template" on Review step. Template cards at top of creation screen. "Repeat" action on completed competitions. Quick Create: single-page form with smart defaults for Americano/Mexicano.
Medium Priority (differentiation)
11. Player-Side Score Entry + Confirmation
Field only→ Section 8
Players enter scores from phone, opponent confirms via push. Dispute → admin resolves. Auto-confirm after 15 min. Full flow in Section 8.
12. Check-In Panel (QR + Manual)
Field only→ Section 1
CHECK_IN state with QR display, progress counter ("12/16 checked in"), manual check-in toggles, "Close Check-In & Start" button. Playtomic has nothing like this.
13. King of the Court Format
Spec'd
Third most popular casual format. Playtomic has it, Field doesn't yet. Ship next after getting Americano/Mexicano flows solid.
14. Post-Competition Podium + Repeat
Copy Playtomic→ Section 10
Podium visualization (1st/2nd/3rd). "Repeat Competition" button to clone with new date. Summary stats. Phase 1 of post-competition per Section 10.
15. TV / Fullscreen Scoreboard Mode
Field only
Dark theme, large fonts, auto-rotating screens (matchups → leaderboard → sponsors). QR overlay. Real-time via Firestore. For clubs with TVs near courts.
Nice to Have (polish)
16. Cancellation Policy (time-before)
Low
Configurable: "Cancel up to X hours/days before start for full refund." Copy from Playtomic.
17. Competition Analytics Tab
Low
Total competitions, unique participants, revenue, participation rate, repeat rate. Bar + line charts. Already spec'd.
18. Calendar Integration
Low
Competition blocks on BookingCalendar (purple color). Click → navigate to competition. Auto-blocks courts.
19. Competition Chat
Copy Playtomic
Built-in chat per competition (Playtomic has this at session level). Separate from WhatsApp. Needed for "Share Matchups" feature.
20. Waitlist Management
Field only→ Section 5
When max reached: "Join Waitlist." Auto-promote when cancellation happens. 2-hour confirmation window. Playtomic has no waitlist.

Full Feature Matrix
Every feature compared across Playtomic and Field.
FeaturePlaytomicField (Current / Proposed)Priority
Creation Wizard
Format in wizardNo (at matchup time)Yes Step 1Ahead
RecurrenceYesNo → BuildCritical
Relative deadlineYesNo → BuildCritical
Visibility toggleYesNo → BuildCritical
Odd participantsYesNo → FixCritical
Member pricingYesComing soon → ShipCritical
Scoring model12/24/32/custom + sortConfusing model → ReplaceCritical
Court auto/manualManual onlyBothAhead
Landing pageNoYesAhead
Draft modeNoYesAhead
Review stepNoYesAhead
TemplatesNoSpec'dHigh
Player Management
Self-registrationYesYesParity
Admin add playerYes (search or create)Basic → EnhanceHigh
Walk-in quick-addNoNo → BuildHigh
Payment trackingYes (Unpaid/Cash/Card)Basic → MatchHigh
WaitlistNoNo → BuildLow
Round Generation
Auto-generate matchupsYesYesParity
Pairing options3 (strongest/even/random)2 → Expand to 4Critical
Manual drag overrideYesNo → BuildHigh
Preview before confirmYes (summary step)No → BuildHigh
Resting player logicYesNo → BuildCritical
Duplicate roundYesNo → BuildLow
Score Entry
Admin score entryYesYesParity
Auto-sumYesNo → BuildHigh
Player-side entryNoSpec'dMedium
Result confirmationNoSpec'dMedium
Leaderboard
Basic (rank, name, M, W, Pts)YesYesParity
Losses columnNo→ BuildHigh
Point differentialNo→ BuildHigh
Form indicatorsNo→ BuildHigh
Position change arrowsNo→ BuildHigh
Live updates (Firestore)UnknownYesAhead
Post-Competition
PodiumYesNo → BuildMedium
Repeat/cloneNo→ BuildMedium
Recap cardsNoSpec'dLater
Rating change displayNoSpec'dLater
Infrastructure
Check-in (QR)NoSpec'dMedium
TV modeBasic fullscreenSpec'd (advanced)Medium
Share matchupsYesNo → BuildHigh
Competition chatYesNoLow
Multi-clubNoYesAhead
Glicko-2 ratingNoSpec'dKey diff.

Field Competition Engine — Full Operational Spec v2
May 2026 · Guilherme Fontes · Procimo
Based on Playtomic backoffice analysis + Field Manager current build + competition engine spec