TDD Cup
Organiser Manual
πŸ“– Organiser Manual
Complete guide to managing your AIRΒ³ TDD Cup
Welcome! This manual explains every feature of the Admin panel. Whether you are creating your first cup or managing a long-running season, you will find here all the information needed to organise an AIRΒ³ TDD Cup successfully. Each section corresponds to a panel of the Admin page.
πŸ“‘ Table of Contents
Philosophy & Task Design
Designing tasks that work for everyone

Before diving into the technical features, it is worth understanding the spirit of the AIRΒ³ TDD Cup. As an organiser, the way you design your tasks has a much bigger impact on participation than any scoring parameter you can configure.

The Core Principle

The goal of a TDD task is not to challenge only the best pilots. It is to design a task that as many pilots as possible can actually complete. The best pilots will naturally fly further β€” covering more distance through smarter route choices, longer flights, and bigger detours within the task β€” but the task itself should remain reachable by intermediate pilots flying lower-performance gliders.

Speed is intentionally not part of the TDD scoring system: the cup rewards flying well, not flying fast. A task that only a handful of pilots can complete defeats this principle and discourages participation.

Recommendations for Season Cups

In a Season Cup, the same tasks remain available throughout the season and pilots fly them under varied weather conditions. Tasks must therefore be sized so that they remain achievable across a wide range of conditions, not just the best days.

Two typical task shapes:

Why these distances matter: The distance reference for scoring is the best XC among pilots with the highest track points (turnpoints + goal) on each task. A task that very few pilots can fly produces a thin, unstable reference and a sparse leaderboard. Designing reachable tasks keeps the scoring meaningful and the cup lively.

Recommendations for Event Cups

In an Event Cup, you set the task on the day, after assessing the weather. You have direct control over the difficulty: a different task can be designed for each day, calibrated to that specific day's conditions.

The same principle applies β€” the task should be achievable by the bulk of the participants given the day's actual conditions β€” but you have far more flexibility:

Practical tip: When in doubt, err on the shorter side. A task that 80% of the pilots complete makes for a much better competition β€” with rich scoring, lively standings, and engaged participants β€” than an ambitious task that only 2 or 3 pilots reach the goal on.

Why This Matters for Participation

The most common reason pilots stop participating in a cup is the feeling that they have no chance. If the tasks are designed only for the very best, intermediate pilots quickly disengage. A cup with reachable tasks builds a community: pilots come back week after week, the leaderboard moves, and the cup becomes a regular fixture in the local flying scene. Task design comes first.

↑ Back to top
πŸ† 1. Cups
Creating and managing competitions

A Cup is the top-level container for your competition. It groups together all the tasks, scores, pilots, and configuration. Before doing anything else, you must create a Cup.

Cup Types

When creating a cup, you must choose between two types:

⚠ Important: The cup type cannot be changed once scores have been submitted. Choose carefully when creating the cup.

Cup Fields

FieldDescription
NameThe display name of the cup (e.g. "AIRΒ³ TDD Belgian Cup 2026"). Visible to all pilots.
SlugA short, unique identifier used in URLs (e.g. AIRΒ³TDDBelgianCup2026). Auto-generated from the name but can be edited. Must be unique across all cups.
TypeEvent or Season (see above).
Start / End DateThe cup is considered current if today is between these dates, and previous otherwise. Previous cups remain visible but are grouped in a separate dropdown.
Organiser NameYour name as the cup organiser. Displayed on score and overall pages.
Organiser ContactEmail address shown to pilots who need to contact you (e.g. for flight overrides). Must be a valid email.

Season-only Settings

The following settings only appear when the cup type is Season:

SettingDescription
πŸ“ DCF
Distance Compression Factor
Controls the curve used for distance points. Default: 0.3. Range: 0 to 1. Lower values compress the differences between pilots more aggressively, giving slower pilots a better chance against faster ones. The formula is pts = 500 Γ— (your XC Γ· best XC) ^ DCF.
πŸ“ˆ DBF
Distance Bonus Factor (optional)
An optional bonus mechanic that lets pilots who crossed the Goal as a Turnpoint recover the 100 pts they lost β€” provided they fly significantly more than the reference distance. The DBF value is the multiplier needed to fully recover those 100 pts. Default: 2.5 (= the pilot must fly 2.5Γ— the reference distance for full recovery). The total task score is always capped at 1000 pts.
When to enable DBF? Enable it if you want to motivate strong pilots to keep flying after passing the Goal. Without DBF, a pilot who crosses the Goal without landing is mathematically capped at 900 pts, which can discourage participation. With DBF enabled, a long extension flight can partially or fully recover the missing 100 pts. Disabled by default to preserve the traditional "land at Goal = priority" behaviour.
⚠ Important: DCF and DBF can only be edited before any score is submitted. Once flights are recorded, these factors are locked to ensure scoring fairness across the season.

Cup List Actions

Once a cup is created, several actions are available from the cup list:

↑ Back to top
πŸ“‹ 2. Tasks
Uploading and editing flight tasks

A Task is a specific flight assignment within a cup. It defines the Start cylinder (SSS), Turnpoints (TPs), and Goal that pilots must fly. A cup can contain many tasks β€” one per day for an Event cup (the date is implicit from the day the task is flown), or several throughout the season for a Season cup.

Adding a Task

Four methods are available, all from the Tasks panel after selecting a cup:

  1. πŸ“‚ Upload .xctsk file β€” Upload a task file produced by XCTrack. This is the simplest method when you already have the task defined externally.
  2. πŸ“· Scan QR code β€” Use your camera to scan a QR code generated by XCTrack. Useful when sharing tasks in person at a cup briefing.
  3. ☁️ Cloud code β€” Enter a short code (typically 4 characters, e.g. baba) issued by the XContest cloud service when a task is shared. The task is downloaded from tools.xcontest.org and added to the cup automatically. This is convenient when an organiser shares a task code over chat or email.
  4. πŸ—Ί Create/Edit task β€” Opens the integrated Task Manager where you can build a task graphically on a map, define cylinders, and save. Once saved with the cup selected, the task is added to that cup.

The Task Fingerprint

Every task has a fingerprint that uniquely identifies its waypoints. The fingerprint is calculated from the positions and radii of all turnpoints and the Goal. It is shown in the task parameters in the admin list.

The fingerprint changes whenever any of the following are modified:

The fingerprint does not change when you modify the comp name, Land By time, slug, SSS time, or any non-geometric property.

Why is the fingerprint important? When pilots submit flights, the system uses the fingerprint to attach the score to a specific version of the task. This guarantees that scores remain consistent even if the task is later edited or recreated.

Task Actions in Admin

From the Admin panel, the actions you can perform on an existing task are intentionally limited to safe operations:

Note: changing waypoint positions, radii, Land By time, or airspace settings is not done from the Admin panel. These edits are performed in the Task Manager (see below).

Editing a Task in Task Manager

To edit the actual content of a task (geometry, timing, airspace), use the Task Manager. You must be logged in with an account that has edit rights on the cup (owner, contributor, or superadmin).

From Task Manager, you can edit:

Saving Edits β€” What Happens Depending on the Score Status

The behaviour when saving an edited task depends on whether the task already has submitted scores:

Case 1 β€” No scores submitted yet. You can save your changes directly. The task is updated in place and gets a new fingerprint (if you modified the geometry). All future submissions will use the new version.
Case 2 β€” Scores already submitted. You cannot overwrite the original task with a different fingerprint. Instead, when you save, a new task is created in the cup. The original task keeps all its existing scores. Any pilot who submits a flight from now on will be matched against the task that fits their tracklog (the original or the new one). This protects already-recorded scores from becoming inconsistent.

Task Visibility

Tasks are publicly visible in Task Manager for as long as the cup is active. Tasks disappear from public listing 90 days after the cup's end date, but the data is preserved in the database. You can still access tasks of previous cups via the admin panel.

Dynamic Airspace per Task

If your cup has dynamic airspace configured, each task automatically inherits the cup-level airspace settings. You can also override at the task level β€” for example, to exclude a specific NOTAM that affects only one day. See section 4. Dynamic Airspace.

↑ Back to top
πŸ… 3. Scores Management
Reviewing and overriding submitted flights

The Scores Management panel lets you inspect the flights submitted to your cup, force-validate flights that were rejected automatically, and remove invalid entries. To use it, select a cup and a task β€” the list of submitted flights for that task appears.

Why a Flight Might Be Rejected

When a pilot submits a flight, the analyser runs three automatic checks that can block the submission:

When any of these checks fail, the pilot is blocked from submitting and is asked to contact the organiser. As an organiser, you can review the situation and decide to override the check.

The Four Override Buttons

After selecting a cup and a task, four override buttons appear at the top of the score list. Each opens the Track Analyser in a new tab with the cup and task already pre-selected and the corresponding check disabled. The pilot's IGC tracklog can then be re-analysed and submitted with the override applied.

ButtonWhat it does
⚠ Force LandByBypasses the Land By Time check only. The flight will be accepted even if it ends after the deadline. Other checks (airspace, G-record) still apply.
πŸ—Ί Force AirspaceBypasses the airspace violation check only. Other checks still apply.
πŸ“‘ Force G-RecordBypasses the G-record check only. Distance points are restored. Use this when the pilot has a logger that does not produce a G-record but you trust the tracklog. Other checks still apply.
βš πŸ—ΊπŸ“‘ Force AllBypasses all three checks at once. Use as a last resort when you have verified the flight is acceptable.

Override Reason

Whenever you submit a flight in override mode, the system asks you to provide a reason for the override. This reason is stored together with your name and the date/time, and a coloured badge appears next to the pilot's name on the public Scores page.

Pilots and other viewers can click the badge to see who applied the override, when, and why. This ensures full transparency around overrides.

BadgeMeaning
⚠ Land By NOKThe flight was submitted after the deadline, override applied.
πŸ—Ί Airspace NOKThe flight crossed a restricted airspace, override applied.
πŸ“‘ G-Record NOKThe flight has no valid G-record, override applied.

Per-Score Actions

For each submitted flight in the list, three actions are available:

ActionDescription
✏️ Edit pilot nameChange the pilot's name as displayed on the score. Useful when the name read automatically from the IGC header is wrong or formatted differently from how the pilot is known in the cup (e.g. BERTRAND F in the IGC, but the cup shows Bertrand Fontaine). The change applies only to this score entry; future submissions by the same pilot will use whatever name is in their IGC unless edited again.
πŸ”— Edit XContest URLAdd or modify the XContest URL associated with this flight. Pilots usually paste their XContest link when submitting, but if they forgot, the organiser can add it here. The URL becomes a clickable link πŸ”— XContest next to the pilot's name on the public Scores page and in the Tracklogs viewer.
πŸ—‘ Delete this scorePermanently remove the score entry from the database. The IGC tracklog stored on the server is not deleted, but the score no longer appears anywhere. Use this when a flight was submitted by mistake or needs to be re-submitted with corrections.

Bulk Deletion

The πŸ—‘ Delete all scores for this task button at the top of the score list removes every single score attached to the selected task. Use with extreme care β€” this is typically only useful when re-running an Event task from scratch after correcting the task definition.

⚠ Important: Deletions cannot be undone. If you accidentally delete a flight, the pilot will need to re-submit it via the Track Analyser, or you can re-import the IGC via Bulk Import if you still have the file.

Tracklog Notifications

If the cup setting Notify on tracklog is enabled (toggle in the Cups list), you receive an email at the organiser contact address every time a pilot submits a tracklog to your cup. This is useful to monitor activity in real time during a competition.

πŸ“¦ Bulk Import β€” Importing Multiple Tracklogs at Once

The Bulk Import tool lets the organiser submit a large number of IGC files in one go. This is useful at the end of an Event cup day to process all flights at once, or when migrating tracklogs from another system.

The tool is accessed via the πŸ“¦ Bulk Import button that appears next to the πŸ—‘ Delete all scores button in Scores Management once a cup is selected. Selecting a cup is enough β€” by default, Bulk Import will automatically detect the right task for each imported IGC file. You can also select a specific task if you want to force every flight to be analysed against the same task.

How it works β€” 3 steps

  1. Step 1 β€” Select Cup
    Pick the cup the flights belong to. By default, the task selector is set to πŸ€– Auto-detect task from IGC: the system will automatically identify, for each imported IGC file, which task of the cup the pilot was flying β€” based on the takeoff position and the waypoints crossed by the tracklog. This is the recommended mode and works perfectly even when importing a mixed batch of flights from different tasks of the same cup.

    If you prefer, you can override this default and select a specific task from the dropdown. In that case, every imported file will be forced to be analysed against the chosen task. This can be useful when you know all the IGC files belong to the same task (e.g. an Event cup day where everyone flew the same task) and you want to skip the auto-detection step.
  2. Step 2 β€” Drop IGC Files
    Drag and drop one or several .igc files onto the drop zone, or click to open a file picker. Multiple files are supported. Each file will be processed independently in step 3.
  3. Step 3 β€” Run Import
    Click β–Ά Start Import. The system processes each tracklog one by one: it parses the IGC, extracts the pilot name and date from the IGC header, identifies the task (auto-detected or pre-selected), runs the same task and airspace analysis as the regular Track Analyser, and submits the result to the cup. A live table shows the progress, the computed track points, XC distance, and any violations for each flight.

Auto-Detection Logic

When auto-detect is enabled, the system identifies the task in two steps:

If no task can be confidently identified, the file is reported as "No matching task" in the result table and is not submitted.

What is checked for each flight

Bulk Import applies the same rules as the regular submission flow:

🌍 4. Dynamic Airspace
Daily updated airspace zones with NOTAMs

The Dynamic Airspace system automatically downloads, every day during the cup, the up-to-date airspace data (including active NOTAMs) for the countries of your competition. Pilots submitting flights are then checked against these daily zones.

This is the recommended configuration for any cup that runs over a long period β€” especially Season Cups β€” because it ensures the airspace check always reflects the latest published restrictions.

⚠ Source & responsibility: All airspace information used by the AIR³ TDD platform is provided by airspace.xcontest.org and is only a reflection of what is published on that platform. TDD does not produce its own airspace data and cannot be held responsible for any error, omission, or delay in the source data. It is the pilot's and organiser's responsibility to cross-check airspace information with official aviation publications.

Configuration Levels

Dynamic Airspace can be configured at two levels:

Required Cup Settings

Before configuring Dynamic Airspace for a cup, the cup must have a Start Date and an End Date defined. The Dynamic Airspace download is scheduled to run only during this period. Cups without dates cannot use Dynamic Airspace β€” set the dates first.

Choosing the Format: JSON vs OpenAir

You can choose between two formats for the airspace data:

πŸ”· JSON (recommended) β€” The JSON format includes the activation hours of each zone. When a pilot's flight is checked, only zones that were actually active at the moment the pilot crossed them are counted as violations. This avoids false alerts on zones that were inactive during the flight (e.g. a TSA active only between 14h and 16h while the pilot flew at 10h).
πŸ“„ OpenAir β€” The OpenAir format does not include activation hours. All zones present in the file are treated as active for the entire flight, which can produce false violations. Use OpenAir only when JSON is not available for your area, or for testing purposes. The admin interface displays a red warning when OpenAir is selected.

Configuration Fields

FieldDescription
CupThe cup to configure.
LevelCup or Task. If Task is selected, you must also pick the specific task.
TypeπŸ”· JSON (recommended) or πŸ“„ OpenAir. JSON is selected by default.
CountriesUp to three countries whose airspace data will be downloaded. Country 1 is required, Countries 2 and 3 are optional. Useful for cups near a border (e.g. Belgium + Luxembourg + France).
πŸŒ… Start flying (local)The earliest flying time of a typical day in your cup region, in local time. The system automatically converts and stores it in UTC. The UTC equivalent is displayed in real time below the input. Default: 10h local time.
πŸŒ‡ End flying (local)The latest flying time of a typical day in your cup region, in local time. Automatically converted to UTC. Default: 19h local time.
Why local time for input? Organisers naturally think in local time. The system converts to UTC behind the scenes because UTC is the standard used by aviation data and IGC tracklogs. You see both: you input in local, and the UTC equivalent is shown right below to confirm the conversion.

Defining the Flying Window

The flying window defined by Start Flying and End Flying tells the system which time range to consider when filtering zones. With JSON, only zones whose activation overlaps with this window are downloaded β€” this keeps the airspace data focused on what matters for your cup.

For example, with the Belgian default of 10h–19h local (8h–17h UTC in summer), a NOTAM active only at night between 22h and 06h will not be included, because it does not overlap with the cup's flying window.

Excluding a Specific Task

If your cup uses Dynamic Airspace at the cup level but you want to opt out for a single task (for example because that task uses a static OpenAir file instead, or because the airspace data is irrelevant for that flight), you can exclude the task from the dynamic check.

This is done from the Tasks panel: when a cup has Dynamic Airspace configured and a task does not have a static OpenAir file, an πŸŒβœ• Exclude button appears next to the task. Click it to confirm the exclusion. The task will no longer be checked against the dynamic data.

Manual Refresh β€” "Fetch Now"

The ⚑ Fetch Now button triggers an immediate download of the configured airspace data, without waiting for the next scheduled refresh. In normal operation you should not need to use it β€” the system is designed to refresh the airspace automatically at the right moment so that submitted flights are always checked against an up-to-date file. The button is mainly there for two situations: verifying that everything works right after creating a new configuration, or troubleshooting if you suspect the automatic refresh did not run as expected.

Static vs Dynamic Airspace

If a task has a static OpenAir file attached (uploaded by the organiser), the static file takes priority over any cup-level dynamic configuration for that task. Use the static option when you want a fixed airspace definition that does not change daily β€” typically for short Event cups where the regulatory situation is known in advance.

↑ Back to top