Screen & form mocks

Each mock shows the screen / form side-by-side with FIFA World Cup and Olympics data so you can see how the same component adapts. Yellow = client-editable · Dashed border = read-only display. Focus is structure, not final visual design.

Setup · one-time per event

Create Event

The form adapts based on eventType. FIFA tournaments default to a match-only structure; Olympics enables sub-event (sport) hierarchy automatically.

super_adminevent_admin1× per event
FIFA WORLD CUP 2026 SPORTS_TOURNAMENT
New Event
DRAFT
FIFA World Cup 2026
FIFA-WC-2026
SPORTS_TOURNAMENT
→ Match hierarchy, placeholder teams supported
USD
11 Jun 2026
19 Jul 2026
48
14
LOS ANGELES 2028 OLYMPICS_MULTI_SPORT
New Event
DRAFT
Los Angeles 2028 Olympics
LA-2028
OLYMPICS_MULTI_SPORT
→ 3-level hierarchy: Sport → Session → Category
USD
14 Jul 2028
30 Jul 2028
72
21
Medal sessions get earlier deadline
Behavioural difference: once eventType is saved, the Event Detail page reorganises the navigation — FIFA events show "Matches", Olympics events show "Sports → Sessions". Sub-event grouping appears in dropdowns across Sales / Purchases / Reports.
Setup · one-time per event

Bulk schedule upload

Drag-drop the full season / tournament schedule. Column mapper auto-detects common layouts (FIFA 10-col, Olympics 12-col flat). Creates all matches, sub-games, categories, venues in one commit.

FIFA schedule XLSX
Import schedule
Schedule-WC2026-v3.xlsx · Schedule WC2026 · 128 rows · 10 cols
Match-per-row (FIFA)
FIFA World Cup 2026
Excel col→ Maps to
M#MatchDef.code
GameteamsOrDescription
Date · TimematchDate · matchTime
City+StadiumsvenueId (fuzzy-match)
GroupgroupStage
Capacityvenue.capacityOverride
104 matches · 16 venues (3 new) · 8 placeholders to resolve · 0 errors
Olympics flat XLSX
Import schedule
LA2028-schedule.xlsx · Sheet1 · 3,584 rows · 12 cols
Flat (1 row per session × category)
Los Angeles 2028
Excel col→ Maps to
Session CODEMatchDef.code
CATEGORYSubGameCategory (group by Session CODE)
DISPSport (sub-event)
S.DescteamsOrDescription + stage parser
MedalisMedalSession (Y/N)
Start · EndmatchTime · endTime
213 sessions · 52 sports · 48 venues (5 new) · 218 medal sessions · 14 placeholders · 0 errors
Setup / rare

Add / edit match · session

Single match editor — typable fields where they matter (venue, teams). Used after import for manual tweaks, placeholder resolution, and one-off additions.

FIFA · M64 Final (placeholder teams)
Edit match
M64
Final (derived from M64)
Winner SF1
Placeholder · resolves when M61 completes
Winner SF2
Placeholder · resolves when M62 completes
19 Jul 2026
18:00
MetLife Stadium, New York
82,500
17 Jul 2026 18:00
= matchDate − dispatchBufferHours(48)
Olympics · ATH15 100m Finals
Edit session
ATH15
Athletics (ATH)
M - 100m Final · Gold Medal Session
Parsed from S.Desc
04 Aug 2028
Fri (auto)
20:50
21:30
LA Memorial Coliseum
77,500
☑ Yes
Drives priority on dispatch
A · B · C · D · First
No E for this session
Rare · tournament-progress

Placeholder team resolution

Enter a match result → system cascades to all downstream matches that referenced it. Affected clients get notified.

Enter result · M61 Semi-Final 1
Brazil
France
Brazil
2 – 1
Cascade preview:
  • M63 (3rd place) · away team Loser SF1France · 42 affected clients
  • M64 (Final) · home team Winner SF1Brazil · 184 affected clients
Setup · once per venue/match

Seat map upload + category paint

Upload the stadium grid, paint category zones, confirm category coverage matches capacity. Unlocks visual allocation on Distribution.

Seat map · Estadio Azteca (v2 · 2026 layout)
Venue-level
Or per-match override
CSV · Block · Row · Seat · X · Y
estadio-azteca-v2.csv · 87,523 seats · checksum OK
ZoneBlocksSeatsCategoryOverride price
Lower Platinum100–1128,200Top Cat 1
Lower A113–13014,800Cat 1
Upper A200–22822,300Cat 2
Upper B229–26024,100Cat 3
Behind Goal261–31218,123Cat 4
Coverage OK · 87,523 / 87,523 seats categorised · matches venue.capacity.
Daily · procurement

New Purchase

Bulk buy from one vendor for one match (or session). Multi-line, auto-expands to unit inventory on save.

FIFA · M28 purchase from TicketVault
New Purchase · FIFA WC 2026
TicketVault
2025-100129 (auto-filled)
M28 — MEX vs KOR
18 Jun 2026
USD
e-ticket
☐ No
Line items2 lines · 55 units
Top Cat 1
43
1,893 USD
81,399
Cat 2
12
850 USD
10,200
+ Add line
91,599 USD · 55 units will generate (P00045–P00099)
Olympics · ATH15 purchase (medal session)
New Purchase · Los Angeles 2028
Olympic Ticket Partner
OLY-2028-014
ATH15 — 100m Finals (medal)
12 Apr 2028
USD
mobile transfer
☑ early deadline
Line items3 lines · 58 units
First
8
4,800 USD
38,400
A
20
1,950 USD
39,000
C
30
650 USD
19,500
+ Add line
96,900 USD · 58 units will generate · 3 sets
Post-save: system expands to _PURCHASE_UNITS (UnitID P00045..P00099 FIFA · P00200..P00257 Olympics), assigns SetID = PR<sourceRow>-S01 per line, stamps status AVAILABLE, ready for allocation.
Daily · sales · REVISED layout

New Sale (revised per latest brief)

Client field typable with autocomplete at the top · Match field moves into each line · USD/EUR only · FX removed. Supports one-sale-many-matches (common for travel agencies).

FIFA · travel agency buys across 3 matches
New Sale · FIFA WC 2026
Meridian Travel
Typable · best-match autocomplete
240739 (auto-filled)
15 Apr 2026
EUR
USD or EUR only
PENDING
PO-2026-0042
Consecutive seats for Final · wheelchair access row for M01
Ticket lines · match per line3 lines · 10 tickets
M06 AUS vs POC
Cat 3
4
450 EUR
M32 USA vs AUS
Cat 3
4
450 EUR
M64 Final
Top Cat 1
2
2,950 EUR
+ Add another match line
Checks: Credit 480k / 500k available · no oversell · 2 tickets for Final flagged amber (close to Top Cat 1 limit).
9,500 EUR · 10 tickets · 3 matches
Olympics · agency buys multi-sport hospitality
New Sale · Los Angeles 2028
Al Habtoor Group
VIP flag · policy may apply
OLY-2028-SL-0017
20 Apr 2028
USD
INVOICED
Hospitality access required · group of 4 attends all 4 sessions
Ticket lines · session per line4 lines · 16 tickets
OOC01 Opening Ceremony
First
4
7,500 USD
ATH15 100m Finals
First
4
4,800 USD
FBL58 Gold Medal Match
A
4
2,800 USD
OCC01 Closing Ceremony
A
4
3,900 USD
+ Add another session line
VIP policy note: Al Habtoor is VIP · allocation policy may exclude from FULLY_AUTO runs.
76,000 USD · 16 tickets · 4 sessions
Daily · allocator hub

Distribution — the allocation control table

Central operational table. Each row = one ticket (child DistRow). Filters to find unallocated items; Side drawer opens Allocation Preview; Special Handling panel for unallocate / override / reset.

Distribution · FIFA WC 2026 · 1,420 rows
Status: unallocated × Match: M28 × Category: Cat 3 × + Add filter Showing 24 of 1,420
IDMatchCatCompanyStatusUnitBlock/Row/SeatDeliveryGuest
S140-1M28Cat 3Meridian TravelUNALLOCATED
S140-2M28Cat 3Meridian TravelUNALLOCATED
S141-1M28Cat 3Apex HoldingsALLOCATEDP00045C · 12 · 14SENTJohn Smith
S141-2M28Cat 3Apex HoldingsALLOCATEDP00046C · 12 · 15ACCEPTEDSara Smith
S142-1M28Cat 3Al Habtoor GroupWAITING_STOCK
Daily · allocator decision

Allocation Preview

Top-6 candidate plans ranked by score. Operator picks a plan; policy violations block incompatible ones.

Allocate · Sale S140 · M28 Cat 3 · 4 tickets needed
#PlanStrategyScoreMargin %Margin ΔPolicy
1PR0017-S01 × 4 (TicketVault)EXACT0.89238%+640 EURPASS
2PR0018-S01 × 4 (TicketVault)GREEDY_LARGEST0.88036%+608 EURPASS
3PR0017-S01 × 2 + PR0018-S01 × 2ROTATED_DESC0.73137%+624 EURPASS
4PR0021-S01 × 4 (SeatWave)EXACT0.70528%+480 EURBLOCKED margin floor 30%
5PR0019-S01 × 3 + PR0020-S01 × 1GREEDY_SMALLEST0.61135%+580 EURBLOCKED split policy SINGLE_SET_ONLY
Recommended plan #1: exact match, single set from TicketVault, no split, 38% margin. Commit writes Vendor=TicketVault, AllocatedUnitIDs, flips units P00045–P00048 to ALLOCATED, appends to _ALLOC_LOG.
Rare · override / unallocate

Special Handling drawer

Every operation requires typing UNDO and a reason. All actions append to _ALLOC_LOG.

Special Handling · Sale S141
Unallocate sale (all units back to AVAILABLE)
Other options: Unallocate by SetID · Reset seats by SetID · Set AllocFromCategory override · Clear AllocFromCategory override
Type "UNDO" to confirm
Wrong vendor selected — TicketVault pulled the listing; re-allocate from SeatWave
Rare · exception

Oversell Resolution drawer

Fires when a sale line qty exceeds available inventory. Manager picks approve / reject / upgrade.

Oversell alert · Sale S145 · M64 Final · Top Cat 1
Requested: 2 tickets · Available: 0 · Oversold by: 2 · Client: Al Habtoor Group (VIP)
OptionEffectNotes
Approve overrideLine → ALLOCATED (commit)We'll source extra inventory · bear the risk
RejectLine removed from saleClient notified · refund triggered
Upgrade categoryOffer premium-tier replacement+250 EUR per ticket · margin recomputed
Customer is VIP — sourcing additional from secondary market; approved by CFO
External · client-access

Client Portal — advanced filters + Accept receipt

Large clients manage thousands of tickets. Filters reduce the set, yellow cells are editable, bulk Accept closes out deliveries.

Client Portal · Meridian Travel · 327 tickets · token expires in 8 days
Match: M28, M32, M64 × Category: Cat 3, Top Cat 1 × Delivery: NOT_SENT + SENT × Block: C · rows 12-15 × Holder: "smith" × + Add filter 42 of 327 · 18 missing email
Sales IDM-No.GameCatP · PurchQ · AllocBlockFirst nameLast NameClient EmailDelivery
S140-1M28MEX vs KORCat 344C · 12 · 14JohnSmithjohn.smith@…SENT
S140-2M28MEX vs KORCat 344C · 12 · 15SaraSmithsara.smith@…SENT
S140-3M28MEX vs KORCat 344C · 12 · 16missingNOT_SENT
S140-4M28MEX vs KORCat 344C · 12 · 17missingNOT_SENT
S145-1M64FinalTop Cat 120awaiting allocation
Column meaning: P = tickets you purchased · Q = allocated so far. When Q = P, all guest rows are editable. When Q < P, remaining rows grey out until allocator finishes.
External · supplier-access

Supplier Portal (FEW supplier) — with redaction

Pre-generated from all purchases with this supplier. Client names visible (needed for delivery), Company redacted to MIRRA, vendor credentials hidden.

Supplier Portal · POVAMI · 98 tickets allocated · 40-col sheet
Privacy notice: Client company identities are redacted (shown as MIRRA). Only delivery-necessary contact info is visible. Vendor/password columns are hidden entirely.
IDM-No.GameCompanyINV-NOCatQtyBlock · Row · SeatFirst nameLast NameClient EmailDelivery
S196-1M19ARG vs ALGMIRRA626005399-UPCat 32D · 4 · 21Mario CarlosAlva Britomalvab.99@…NOT_SENT
S250-1M28MEX vs KORMIRRA2025-3008Cat 210B · 3 · 1–10Varies(10 names)group emailSENT
S251-1M28MEX vs KORMIRRA2025-3008Cat 224B · 4 · 1–24INVENTORYpending allocation
Data flow: rows start as inventory-only (last row). When the allocator commits, client detail streams in (first two rows). You update Delivery status; we cascade to client & internal.
Daily · dispatch

Staff Task detail

Staff member's dispatch workspace. Vendor creds revealable with audit. Proof URL captures confirmation.

Task S141-1 · M28 MEX vs KOR · Cat 3 · assigned to Mohammed Hassan
630679135
Normal
TicketVault · operations@ticketvault.com
•••••••• 👁 show (audits)
PASSWORD_VIEWED logs · auto-hide in 30s
C · 12 · 14
2025-100129
Client: John Smith · john.smith@meridiantravel.ae · +971 50 234 5678
NOT_SENT → SENT
21 Apr 2026 14:32
https://viagogo.com/my-orders/confirm/abc123xyz
Sent via e-ticket transfer · client confirmed receipt 15:02
Daily · command center

Inventory & Distribution Command Center

Target design direction per screenshot #2. Action-first layout: stats, urgent items, match widgets, stock overview.

Dashboard · FIFA World Cup 2026 · SELLING
12,480
+8.2% this week
13,210
Live inventory pool
84%
Across all matches
316
Needs staff / supplier action
Action Center · 3 urgent items
M34 · Cat 4 oversold risk — need 12 more units to cover demand
Roadtrips PREM awaiting confirmation — 15 / 20 tickets confirmed received
Matthias dispatch pending — 20 allocated units still not marked sent
Match Summary Widgets
M34
71%
M41
80%
M52
100%
M64
42%
Click a match for per-category breakdown · Purchased / Sold / Remaining / Oversold-alert
Rare · compliance

Audit log

_ALLOC_LOG append-only · every allocation mutation · credential reveal · event transition.

Audit log · last 50 entries
TimeUserActionSaleIDSetIDUnitsReason
2026-04-21 14:32:18Mohammed HassanPASSWORD_VIEWEDS141-11Dispatching to client
2026-04-21 14:28:02James PatelALLOCATES140PR0017-S014Auto (plan #1)
2026-04-21 13:15:40Sara Al MansooriUNDO_SALES1358Wrong vendor selected — TicketVault listing pulled
2026-04-21 12:55:03James PatelSET_ALLOC_FROM_CATEGORYS137Upgrade to Top Cat 1 (agreed with client)
2026-04-21 11:02:11Alex RahmanEVENT_TRANSITIONALLOCATING → DISPATCHING · start of dispatch window
2026-04-20 18:45:00Noura HaddadCREDENTIAL_UPDATEDTicketVault password rotated