# Startlist AI — Gebruikershandleiding

Startlist AI zet de wensen van ruiters, geschreven in gewone taal, om in een **startvolgorde** die deze wensen respecteert.

U typt wat de ruiter vraagt — in elke taal, precies zoals het is gezegd. De AI leest het, zet het om in nauwkeurige regels voor de startvolgorde, en de extensie bouwt een startvolgorde die deze regels toepast en stuurt deze vervolgens terug naar Equipe.

De AI draait op uw eigen netwerk: **namen van ruiters en hun verzoeken verlaten dit netwerk nooit**.

Deze handleiding is bedoeld voor wedstrijdsecretarissen en organisatoren.

---

## Inhoudsopgave

1. [Hoe het werkt](#hoe-het-werkt)
2. [De extensie openen](#de-extensie-openen)
3. [Verzoeken van ruiters registreren](#verzoeken-van-ruiters-registreren)
4. [Een goed verzoek schrijven](#een-goed-verzoek-schrijven)
5. [Wat de AI begrijpt](#wat-de-ai-begrijpt)
6. [De startvolgorde opbouwen](#de-startvolgorde-opbouwen)
7. [Statusiconen](#statusiconen)
8. [Best practices](#best-practices)

---

## Hoe het werkt

1. **Verzamel de wensen** — registreer elk verzoek op het scherm **Rider Requests** zodra het binnenkomt. De AI leest het zodra u het opslaat en laat zien wat het heeft begrepen.
2. **Bouw de volgorde op** — kies op het scherm **Process Rider Requests** een klasse, laat de tool de startvolgorde berekenen, controleer het resultaat en stuur het naar Equipe.

Twee extra schermen, **Hippodata import** en **Hippodata Viewer**, stellen u in staat om Hippodata-gegevens (klassen, resultaten, teams, FEI-artikelen) in te voeren en in te zien wanneer dat nodig is.

---

## De extensie openen

Open deze vanuit de wedstrijd in Equipe: het werkt direct op die wedstrijd, zonder dat u hoeft in te loggen.

De extensie opent in hetzelfde tabblad als Equipe. Gebruik **Back to Equipe**, rechtsboven op elk scherm, om terug te keren naar waar u was.

---

## Verzoeken van ruiters registreren

Het scherm heeft een formulier bovenaan (**New request to AI**) en de tabel **Requests received** eronder.

### Een verzoek toevoegen

1. **Kies de ruiter** — typ de naam van een ruiter of een paard en selecteer deze uit de lijst. Door een paard te kiezen, wordt de bijbehorende ruiter geselecteerd.
2. **Kies de reikwijdte** — standaard geldt het verzoek voor de **hele wedstrijd**. Om dit te beperken, vinkt u **Whole show** uit en selecteert u de klassen. Voor wedstrijden die meerdere weken duren, gebruikt u de week-tabbladen.
3. **Schrijf het verzoek** — in elke taal, zoals de ruiter het heeft gezegd.
4. **Opslaan** — binnen enkele seconden toont de regel wat de AI heeft begrepen.

De **help button** naast Save toont voorbeelden van goed begrepen verzoeken.

### De tabel Requests received

| Kolom | Inhoud |
|---|---|
| **Rider** | De ruiter, en het paard als het verzoek betrekking heeft op één paard |
| **Classes** | *whole show* of de betreffende klassennummers |
| **AI Request / Response** | De originele tekst, gevolgd door de ✨-regel met wat de AI heeft begrepen, en de tijd die het kostte |
| **Status** | De status van het verzoek (zie [Statusiconen](#statusiconen)) |

Gebruik ✎ om een verzoek te **bewerken** en 🗑 om het te **verwijderen**.

### Wanneer de AI uw hulp nodig heeft

De meeste verzoeken worden direct begrepen (groen vinkje). In drie gevallen is een beslissing nodig:

- **Pick one** — de ruiter noemde iemand ("na Rozier") en er zijn meerdere ruiters die overeenkomen. Kies de juiste in de vervolgkeuzelijst.
- **Guessed** — de formulering was ongebruikelijk: de AI stelt de dichtstbijzijnde regel voor, maar laat deze **inactief**. Als dit correct is, klik dan op **✓ approve**.
- **Not understood** — de AI kon de tekst niet interpreteren, of het verzoek spreekt zichzelf tegen ("vóór 10:00 en na 14:00"). De reden wordt getoond; gebruik **rephrase** om het opnieuw te formuleren.

De teller bovenaan het scherm geeft aan hoeveel items nog een beslissing vereisen.

---

## Een goed verzoek schrijven

- **Elke taal** — Frans, Engels, Nederlands, Duits, zelfs gemengd.
- **De eigen woorden van de ruiter** — trefwoorden zijn niet nodig. "Mijn paard is nog groen, ik ga liever vroeg", "j'arrive du CSI voisin, pas avant 14h" en "graag vroeg starten" werken allemaal.
- **Meerdere wensen in één verzoek** — "Niet direct na Rozier, maar met Gonin en Billot, en niet voor 14:30" levert vier regels op.
- **Benaderende woorden zijn prima** — "ongeveer in het midden", "indien mogelijk vroeg", "bij voorkeur aan het einde".

### Voorbeelden

| De ruiter zegt… | De AI begrijpt |
|---|---|
| "ergens in het midden alsjeblieft" | start in het middelste derde deel |
| "altijd in de eerste 4" | binnen de eerste 4 om te starten |
| "tussen 25 en 40" | start tussen positie 25 en 40 |
| "ik heb om 18:00 een ponyles" | moet zijn gestart **vóór** 18:00 |
| "ik kom van de nabijgelegen CSI, niet voor 14:00" | kan niet starten **vóór** 14:00 |
| "de twee paarden minstens 15 plekken uit elkaar" | minstens 15 starts tussen de paarden van de ruiter |
| "Cartouche eerst, dan Fais Toi Belle" | vaste volgorde tussen de paarden van de ruiter |
| "houd me naast Tom Green en Lisa Brown" | groepeer de ruiter met deze twee |
| "zet alle Beks bij elkaar" | groepeer elke ruiter met de naam Bek |
| "vlak voor de pauze" | start vlak voor de pauze |
| "niet direct na Rozier, hij doet er altijd zo lang over" | houd de ruiter **ver van** Rozier |

---

## Wat de AI begrijpt

Elk verzoek wordt één of meer van de onderstaande regels; dit is wat u ziet op de ✨-regel.

### Positie in de lijst

| Regel | Betekenis |
|---|---|
| `start_early` | in het eerste derde deel |
| `start_middle` | in het middelste derde deel |
| `start_at_end` | in het laatste derde deel |
| `start_late` | na het eerste derde deel |
| `start_last` | de allerlaatste |
| `start_within_first` | binnen de eerste *N* |
| `start_within_last` | binnen de laatste *N* |
| `start_between` | tussen twee posities, bijv. 25–40 |

### Tijd

| Regel | Betekenis |
|---|---|
| `start_before_time` | moet zijn gestart **vóór** een bepaalde tijd (bijv. een andere afspraak om 18:00) |
| `start_after_time` | kan niet starten **vóór** een bepaalde tijd (bijv. aankomst van een andere wedstrijd) |

"Vóór 10:00" bepaalt de **laatst mogelijke** start; "niet voor 14:00" bepaalt de **vroegst mogelijke** start.

### De eigen paarden van de ruiter

| Regel | Betekenis |
|---|---|
| `min_gap_own_horses` | minimaal aantal starts tussen de paarden van de ruiter |
| `horse_order` | vaste volgorde tussen de paarden van de ruiter |

### Andere ruiters

| Regel | Betekenis |
|---|---|
| `after_rider` | na een specifieke ruiter |
| `before_rider` | voor een specifieke ruiter |
| `near_rider` | dicht bij een specifieke ruiter |
| `far_from_rider` | ver van een specifieke ruiter (ook "niet direct na X") |
| `group_with` | houd meerdere ruiters bij elkaar |
| `coach_far_from_group` | een trainer houdt zijn groep bij elkaar, met meer afstand tot zichzelf |

**Families:** "alle Beks" of "de drie Beks" groepeert **elke ingeschreven ruiter** met die achternaam — het is niet nodig om ze één voor één te noemen.

### De break

| Regel | Betekenis |
|---|---|
| `before_break` | vlak voor de break |
| `after_break` | vlak na de break |

"Vóór de break" betekent de break; "vóór Cyrius" betekent voor dat paard of die ruiter.

### Negaties en tegenstrijdigheden

Negaties worden begrepen: "niet na de break" wordt *vóór de break*, "niet te vroeg" wordt *laat starten*.
Een verzoek dat nooit kan worden ingewilligd (eerst **en** na de break; voor 10:00 **en** na 14:00) wordt gemarkeerd als **not understood**, inclusief de reden.
Een bericht dat alleen het paard beschrijft of "dank je" zegt, wordt opzettelijk als **unknown** gelaten: de AI doet geen gissingen.

---

## De startvolgorde opbouwen

Op het scherm **Process Rider Requests**:

1. **Kies de klasse** — gebruik de tabbladen **Week / Day** (de rij Week is verborgen bij een wedstrijd van één week), kies vervolgens de klasse.
2. **Bereken de volgorde** — de tool stelt een startvolgorde voor die zoveel mogelijk regels respecteert.
3. **Controleer het logboek** — voor elke regel: toegepast, niet van toepassing (met de reden) of nog te beoordelen. Ruiters die bij elkaar zijn gegroepeerd, worden gemarkeerd. Verzoeken die nooit begrepen zijn, worden opgelijst zodat er geen enkele wordt vergeten.
4. **Let op overlappingen** — er verschijnt een waarschuwing als een ruiter op hetzelfde moment zou starten in twee arena's die parallel lopen.
5. **Ongedaan maken indien nodig** — het geschiedenispaneel herstelt de vorige volgorde van de klasse.
6. **Toepassen op Equipe** — stuur de volgorde naar Equipe.

---

## Statusiconen

**Verzoekstatus**

| Icoon | Status | Betekenis |
|---|---|---|
| ⏳ (blauw) | received | Opgeslagen, wachtend op de AI |
| ✅ (groen) | interpreted | Begrepen — regels op de ✨ regel |
| ❌ (rood) | failed | Niet verwerkt — formuleer het opnieuw |
| ⏹ (geel) | cancelled | Verzoek geannuleerd |

**Regels binnen een verzoek**

- **✓** — klaar.
- **⚠ pick one** — meerdere ruiters komen overeen met de naam: kies er één.
- **guessed / ✓ approve** — voorgesteld op basis van ongebruikelijke formulering: keur goed om te activeren.
- **✗ not found / ✗ incomplete** — een ruiter of paard kon niet worden gevonden, of een groep heeft te weinig leden.

---

## Goede praktijken

- **Registreer verzoeken zodra ze binnenkomen**: elk verzoek wordt in enkele seconden gelezen, en je ziet direct wat er een beslissing vereist.
- **Gebruik de woorden van de ruiter** in plaats van je eigen samenvatting: nuances blijven zo behouden.
- **Stel de reikwijdte nauwkeurig in** wanneer een verzoek alleen betrekking heeft op bepaalde klassen.
- **Lees de "not applicable" regels** voordat je een volgorde toepast: dit zijn de wensen die het waard zijn om met de ruiter te bespreken.