A first version of Startlist AI, built with Paardensport Vlaanderen

This one started with a conversation. Paardensport Vlaanderen vzw, the equestrian federation in Belgium, came to us with a problem they know well. On a big national show, a lot of riders send a PM with their entry: start near my trainer, late in the class, keep my two horses apart, a specific start number. Reading all of that by hand and turning it into a fair start order takes hours, and no one can hold it all in their head at once.

We looked at the numbers together. On one national weekend, almost one in three riders had written a free-text wish, hundreds of them in Dutch, French and English mixed. So we built Startlist AI with them, and this is the first version.

It is an extension inside Equipe. You open it from a meeting, and it does a few things:

  • Reads the rider PM notes. The AI turns each free-text note into a clear, structured wish, whatever language it is written in.
  • Proposes a start order. It keeps the start list you already drew and moves starts within those slots to honor as many wishes as it can. It does not redraw your day.
  • Shows its work. For every wish you see the original note next to what the AI understood, and whether the wish was honored or not.
  • Writes the order back to Equipe when you are happy with it, and never touches a class that already has results.
The extension

The AI only does one job, reading the notes into structured data. Everything after that is plain, predictable logic, so the proposed order is something you can check and trust.

You bring your own OpenAI API key. Startlist AI needs an OpenAI API key to read the notes, and you provide your own. It runs on your key, so the usage is billed to you and you decide what is sent and whether the notes may be processed.

It is not generally available yet. This is an early, first version. It works, but we still have a lot to refine, and we are testing it on real shows with a small number of organizers before we open it up more widely. If you run busy shows with a lot of rider wishes and want to try it with us, get in touch.

Thanks to the team in Belgium for bringing us a real problem and working through it with us. That is how the best things in Equipe get built.

June 2026 Update: Scoreboard Access, Smarter Score Summaries and Cleaner Schedules

June was a busy show month across the Nordics and the Netherlands. We spent it tightening up who can see what, making score summaries match riders correctly across shows, and clearing out a batch of timezone and schedule issues that tend to surface during a live show.

🏆 New features

Restrict a user to specific scoreboards (App)

You can now limit a login to only the scoreboards it should reach. This is mostly for organizers working with streaming providers and graphics operators who should only touch one arena. We wrote a separate post with the details: Restrict a user to specific scoreboards.

Prize in kind for team prize money (App)

Team prize money now supports prize in kind, the same as individual prizes already did. Add a "Prize text" to a team for a medal or another prize, including an emoji like 🥇, and it carries through to the team results in online.equipe.com.

✨ Improvements

Start time conflicts now swap the start number too (App)

When the conflict wizard moves a rider to fix a clash between two of their horses, it now swaps the start number along with the position, matching what happens when you move a start by hand. Classes that are too short for the wizard to fix are shown in a softer colour with a note, so you can see at a glance which ones need a manual look. More in the dedicated post: Resolve start time conflicts automatically.

Score summaries match by FEI ID, licence or name (Online)

Score summaries used to match competitors on one combined rule that merged anyone sharing either a FEI ID or a licence. Riders with different FEI IDs but the same placeholder licence (PENDING or 0000) ended up calculated together. You can now choose FEI ID, licence or name on their own. New summaries default to name, the one identifier that is always present. Existing summaries keep working exactly as before.

Daily work

  • Set "do not compete" from the rider declaration (App). You can now right-click, or use the button, in the rider declaration overview to set a start to DNC, without leaving the page.
  • Labels for payers who never ride (App). People who pay for entries but never ride, for example companies, now get their labels when you address labels to the payer. Payer-only people are no longer dropped when you pick a specific list or competition. Labels are ordered by the lowest number actually printed, and horses inside a label follow the horse number when you sort by number.
  • Cleaner competition selectors (App). Divider lists are now hidden in the competitions selector and as destinations in the start transfer dialog, so they no longer clutter the choices.
  • Competition number length checked on save (App). Saving a competition with a number longer than 20 characters is now blocked in the app, with the error shown under the field. This matches the limit that already applied when publishing online or exporting to a federation, so you find out early instead of at publish time.

FEI

  • Entry system credentials only where they apply. The entry system v3 credentials form now shows only for show jumping, the one discipline that uses it. Events with no FEI entry system (para dressage, para driving, vaulting, reining) are marked so you cannot pick them by mistake.

Online

  • A less misleading "Published" time. For schedule blocks that link out to an external page, like an FEI schedule, we hide the published time, since the page behind the link can change after you publish. Reordering classes no longer marks every shifted class as freshly updated either. Only real changes to a class update its published time now.
  • Live stream stays reachable after a class finishes. When a class section is announced finished, the live stream embed used to disappear completely. The toggle now stays, just defaulted off, so you can still open the stream.

🐛 Bug fixes

  • Result times in the right timezone (App). Result times now show in the competition timezone in the startlist grid, and we fixed a shift that could move them by the timezone offset when loading results across competitions.
  • Meeting dates kept in sync (Online). A meeting's start and end dates now recompute when you add, edit or delete a class, not only on import. Before this they could point at dates that no longer matched any class.
  • Pending shows page no longer reloads other pages (Online). A refresh on the pending-shows page was leaking onto other pages and reloading them every five seconds. It now refreshes only its own page.
  • Schedule alignment with dividers (Online). Divider rows in a pinned arena group no longer push the competition-number column out of line.
  • Drag and drop in the judgement dialog (App). Sorting by drag and drop in the judgement dialog works again.
  • Country codes with letters (App). The country selector now accepts alphanumeric codes such as NI1 and NI2.
  • Entry showed a show as closed when it was open (Entry). Fixed the status shown above the user profile, which could say a show was still closed after it had opened.
  • Payment methods for organizers (Entry). Restricting payment methods could fail for organizers using Stripe, because Stripe does not allow turning off Link through an exclusion list. We switched to an allow-list. Card payments stay available, and leaving the list empty keeps the normal set of payment methods.

📋 FEI and regulatory

  • Para Dressage team export fixed. The FEI export for Para Dressage (CPEDI) team results failed with a "FractionDigits" error when a score carried too many decimals. We now format the team score and points correctly so the export goes through.

💬 What we're hearing

A few patterns from support this month:

  • Combining classes and results. Still our most common theme, mostly from Denmark: collection classes (samleklasse) and merging results across classes or shows. The score summary change above came partly from this.
  • Paperless protocols. Questions about paperless marking sheets and protocols, especially for working equitation and eventing.
  • Login and access. A few reports of the app not loading, including on older Apple tablets. An older iPad is often the cause, and we are looking into it.
  • Team competitions. Still a regular topic from last month: building teams and how totals are counted. Better guidance here is still on our list.

We read every question and report. Keep them coming.

Restrict a user to specific scoreboards

You can now limit a login to specific scoreboards. Many of you who work with streaming providers have asked for this.

Until now, a user with the Graphics role could see and control every scoreboard at your show. That was a problem when you gave a streaming provider, for example Clip My Horse, a login to run the TV graphics. Their operator could open any display at the venue, not just their own.

Now you can enter one or more scoreboard IDs on the user's access, under Users on the organizer. The ID is the last part of the scoreboard URL. The user then only sees those scoreboards, and the director runs without edit options. They can switch scenes, select starts and change competition, but they cannot edit scenes, change settings, upload assets or delete anything.

User access control

Scoreboard IDs are kept when you import scoreboards from another show, or when a show is created from a template. So if you set this up once for a streaming provider, their login keeps working at your next show.

Leave the field empty and the login works like before, with access to all scoreboards.

Resolve start time conflicts automatically

Riders often have several horses, and on a busy day their competitions run at the same time in different arenas. You want enough time between each of their starts so they can get from one ring to the next and ride every horse. Working that out by hand across a full day, with arenas running in parallel, takes ages. The schedule now does it for you.

On the check start times view, set how much time you want between starts, then press the resolve button. It runs in the background, looks across the whole day and every arena, finds the riders and horses with clashing times, and swaps positions to fix them. It respects section boundaries, age groups in young horse competitions, riders with several horses, and pauses, so it never moves something it shouldn't. A progress bar shows what it is doing while it works through the harder cases.

Tested live at a CSI4*

We ran it live at a CSI4* this month. First randomize, which spaces a rider's horses by a number of starts (30 to 60 here). Then run the resolver, which works in minutes, with a 60 minute minimum on top. The verdict from the show was that the new wizard works super. The nice part is how fast it is to check. Run it, look at what is left, and you know in seconds whether the day holds together.

image.png 337 KB

What we improved this week

Two things came straight out of using it at the show.

  • Start numbers now follow the new order. When the resolver moves a horse to a new spot, its start number moves with it, so the printed start number matches the running order. Competitions that already have results keep their numbers, as you would expect.
  • Conflicts that can't be solved are easier to spot. If a competition is shorter than the gap you asked for, no reordering can open up that gap. Those now show in a softer orange instead of red, with a note explaining why when you hover. So you can see at a glance which start times to check by hand. Often the fix is simply to start that competition fifteen minutes earlier or later.

We read every question and report. Keep them coming.

May 2026 Update: Start Time Conflict Resolver, Combined Training & Cleaner Reports

May was about saving organizers time on the schedule, filling in gaps for combined training and eventing, and tidying up the parts of the app people use under pressure during a show.

🏆 New features

Start time conflict resolver (App)

The schedule now has a "resolve start time conflicts" button. It runs in the background, finds riders and horses with clashing start times, and swaps positions to fix them. It respects section boundaries, age groups in young horse competitions, riders with several horses, and pauses, so it never moves something it shouldn't. You get a progress bar while it works through the harder cases instead of a frozen screen.

Combined training: two-phase show jumping (App)

Combined training now supports two-phase show jumping. The second round is published in online results, the show jumping deduction is applied to the total, and the PDF builds its columns from the actual rounds. Results add up the way the protocol shows them.

Cross country: "under review" fence status (App)

Cross country fences can now be marked as under review, so a contested fence is clearly flagged while it's being looked at.

Simplified Chinese (App)

Equipe is now available in Simplified Chinese (zh-Hans).

Disable specific Stripe payment methods (Entry)

Organizers can now turn off individual Stripe payment methods like Link or Klarna, instead of taking all of them or none.

✨ Improvements

Reports and economy

  • VAT on the economy report (App). The meeting economy report now shows VAT percentage and VAT amount, in the page, the PDF, and the new CSV and XLS exports. The exports include totals, and the XLS is grouped into sections with proper currency formatting.
  • Miscellaneous items are sorted alphabetically in the economy report, so the same show always lists them in the same order.

Invoicing

  • Pick the invoice date when generating invoices in batch (App). A date selector sits next to the auto-generate checkbox, limited to the meeting's date range, so batch invoices no longer always use today's date.
  • Proforma invoices are no longer published to the entry system, which keeps draft amounts from showing up where they shouldn't.

Scheduling and start lists

  • Breed and race columns are available in the start list field selector.
  • A "force ascending category order" option was added to randomize.
  • Trainer is now in the officials list.
  • Dots are allowed in category names, so names like "1.30" work.

Daily work

  • The name field is focused automatically on the new person and new horse forms, so you can start typing right away.
  • The message to the organizer is editable in point of sale.
  • Emoji can be used as a prize in kind, for the shows that like a bit of fun.
  • Fetching data no longer publishes online unless you opt in. Publishing online is now an explicit choice when you fetch, so results don't go public before you're ready.

Organizer access

  • A "this week" range button, the page you're on is kept when you change a user's access, and the index now shows each user's active show range.

Federation and language

  • Norwegian framework text is now translated. Dates, number formatting, and validation messages that used to fall back to English now show in Norwegian.
  • Your language is kept when you sign in through a federation. If you switched to your own language, signing in from a federation show no longer resets you to English.
  • Licence year accepts full dates. Federation licence year now takes both a year and a full date (yyyy-mm-dd).

Scoreboard director (App)

If you build scoreboard scenes in the director, rules gained and/or grouping and the scene now exposes the previous current value. Before this, a rule could only check that a rider was currently ranked, so a presentation would re-show and re-animate whenever a judge edited remarks after a result was already on screen. Now a rule can detect the actual moment a rider goes from unranked to ranked, and fire only then:

"rules": {
"and": {
"ne": { "current": { "re": 999 } },
"eq": { "prevCurrent": { "re": 999 } }
}
}

You can read this as: the rider is ranked now (current is not 999) and was not ranked a moment ago (prevCurrent was 999). Apply it to your presentation show and hide actions so they trigger once on submit, not on every later edit.

Value mapping with $if also gained a $default fallback. Previously, if no key matched the current value, nothing changed, and because sequences only replay when the value actually changes, the sequence would quietly not run. A $default key catches anything that doesn't match:

"motion.$if": {
"out": "in",
"horse-in": "in",
"$default": "in"
}

Explicit null, 0, false and "" values in the mapping are now applied too, instead of being skipped.

🐛 Bug fixes

  • Rider spacing in randomize was off by one. The "minimum riders between" setting could leave a rider's two horses one start too close. It now matches the number you set.
  • Numeric category names produced empty start lists. Merged or custom categories with plain numbers (like "130") were parsed ambiguously and could show an empty list or corrupt a scoreboard. Compound ids are now unambiguous and these lists load correctly.
  • Renumbering ignored unchecked class filters. Renumber now respects which classes you've selected.
  • Competitions imported from Tävlingsdatabasen now appear in the same order as the proposition.
  • Reserve list on full arenas (Entry). A competition limited only by an arena limit could still push entries onto the waiting list. It's now blocked when the arena is full and reserves are off.
  • Application fee on refunds (Entry). When a payment is refunded, Equipe's application fee is now refunded too, in full or proportionally for a partial refund.
  • Entry CSV export (Entry). Dropped the sep=; first line that pushed headers to row two, quoted the header row to match the data, and split payer and rider into first and last name columns so you can sort by surname.
  • Officials with three-letter surnames (Online). Names like "Johnny MAK" were having the surname stripped as if it were a country code on import. Fixed.
  • Marking sheet columns are only fetched when the source judgement actually supports them.
  • Collaborators can free up a locked economy (Entry). When an invoice is sent from the app, the economy on the entry is hidden. Organizers can now remove the invoice reference to make it visible and editable again.
  • Reserves no longer error when a rider link is missing its registration.
  • Do-not-compete dates no longer create phantom competitions for list-only dates.
  • Class section page (Online) returns 404 instead of an error when a start has no parent section.

📋 Regulatory and federation

  • Norwegian framework strings, federation licence year as a full date, and the corrected Tävlingsdatabasen import order are covered above.

💬 What we're hearing

A few patterns from support this month:

  • User language resetting to English. Several of you, mainly in Norway, told us your language flipped back to English every time you started from a federation show. We fixed this in May. Your chosen language now sticks.
  • Rider messages and lists online. A handful of organizers had trouble saving rider messages and custom lists in online.equipe.com. We looked into each one.
  • Team classes. Team jumping and team dressage, including ponies, stay among our most-asked topics: building teams, team line-ups, and how the totals are counted. Better documentation here is on our list.
  • Merging and splitting classes. Recurring questions about combining categories or classes that were split for horse and pony, and getting late entries into the right class.
  • Dressage judge comments. Several questions about where to type judge comments during result entry, and the QR code for dressage judges.
  • Cancelled shows. A few organizers asked what to do in Equipe when a show is cancelled.

We read every question and report. Keep them coming.

April 2026 Update: Peppol Matures, EU VAT Export, Faster Invoicing

April was about polishing the Peppol flow now that it has been running in production for a few months, adding VAT export invoicing for riders outside the EU, and making the parts of the app that organizers use every day faster.

🏆 New features

VAT export invoicing (App)

Organizers can now invoice riders outside the EU without VAT. Mark a person as outside the EU and the invoice prints as a VAT export with a single VAT sentence, not two overlapping ones. The flag stays put when you transfer balances between shows.

UK VAT number lookup (App)

We've connected to HMRC so UK VAT numbers can be validated directly, the same way we already do for EU numbers via VIES.

Peppol batch sending (App)

You can now send Peppol invoices in bulk from the people page, in the same flow you use for email invoices. A new Peppol filter helps you find the people who should get one. Peppol invoices also go out as part of the automatic invoice sending routine, so you don't have to send them manually anymore.

Team competitions in score summary (App)

Score summary disciplines now support team competitions. Individual and team results broadcast and publish together after a fetch, so live results stay in sync.

Malaysian ringgit (MYR) (App)

MYR is now a supported currency.

✨ Improvements

Dressage judge selector replaced with autocomplete (App)

The judge dropdown was sorted by first name, which made it hard to find someone when you only remembered the surname. We replaced it with an autocomplete that searches both first and last name. You can still see the full list without typing anything.

Peppol details

  • Sent Peppol invoices print as "Invoice" instead of "PRO FORMA".
  • Invoice number and date are locked once an invoice has been sent through Peppol, so the audit trail can't drift.
  • The Peppol dropdown links to the last sent PDF so you can quickly see what was actually delivered.
  • Credits are sent as negative invoice lines instead of UBL allowance charges, which fixes validation errors with some Peppol receivers.
  • Peppol no longer auto-enables from the send-to default. You opt in explicitly.

Invoice email subject truncated for many horses (App)

When an invoice covers more than three horses, the email subject is shortened instead of listing every horse name. Inboxes look cleaner.

Judge alias on "act as judge" buttons (App)

If a judge has been set up with an alias (e.g. after a last-minute swap), the act-as-judge buttons in the dressage score sheet now show the alias rather than the original position.

Webhook delivery errors notify the extension author (App)

When a webhook delivery fails, we now notify the extension author so they can fix the integration on their end. Previously these errors disappeared silently.

Online sign-in button always visible (App)

The globe button for signing in to online.equipe.com now shows regardless of whether the show is published or not. After unarchiving a show, you no longer have to publish it again to open it from the app.

Smaller things

  • Long descriptions in autocomplete textareas no longer get cut off. You can use newlines too.
  • "Timing to Equipe" is available as a bell sound in the FDS binary driver.
  • "Born year (FO)" is available as a column dependency on startlists.
  • Native share sheet works correctly on Android (Online).
  • The federation search redirects to the FEI search when the federation doesn't exist.

🐛 Bug fixes

  • Entries to closed competitions: entries started before a competition closed could still be submitted after closing. This is now blocked at submit time (Entry).
  • Stale per-judge percents on elimination: when the judge at C eliminated a rider, the other judges' percent totals and ranks weren't cleared. We now reset all derived state atomically and skip writes from non-C judges when the start is eliminated.
  • Working Equitation team results: team totals are now summed by published points (psum), matching what's shown on the protocol.
  • Custom field columns on renumbering: custom fields are now resolved when starts are renumbered.
  • Scoreboard countdown at clock auto-start: the countdown diff is broadcast to scoreboards when the clock auto-starts at 0, so the display doesn't appear frozen for a fraction of a second.
  • Score summary deadlocks: score summary jobs were occasionally deadlocking under load. They now serialize properly, and we skip duplicate team alerts.
  • Refund rounding: floating-point rounding caused entry refunds to be off by a cent in some cases (Entry).
  • FEI XML max score: deduction sections are excluded from the max score in published XML, so FEI exports don't double-count deductions.
  • Bulk updates: bulk update endpoints return 422 instead of 500 when the request body is missing top-level params.
  • Horse reports: sortable columns are validated, so a typo doesn't crash the page.
  • Start fetch: invalid from/to pairs are dropped with a clear warning instead of failing the whole import.
  • Invoice publishing: a missing rider in the entry system no longer blocks invoice publishing.
  • Class section page (Online): returns 404 instead of 500 when the meeting is missing.

📋 Regulatory updates

  • VAT export for riders outside the EU is now supported, with the correct single VAT sentence on the PDF.
  • UK VAT lookup via HMRC matches the EU VIES integration.
  • Peppol continues to mature for Belgian organizers under the 2026 mandate. See the Peppol details above for this month's fixes, and our dedicated Peppol post from December for the full background.

⚡ Faster where it matters

Performance is something we keep working on because slow software wastes the time of the people running shows. A few wins this month, in plain language:

  • Invoice and economy queries are 70-77% faster. We rewrote the economies SQL view to use a person-scoped function. Person reports went from around 1.4 seconds to roughly 300ms on large tour meetings.
  • Background jobs and caching moved off Redis. We have now done the same migration we did on Equipe Online last month. Concurrency limits on the noisiest jobs prevent the duplicate-job deadlocks we've been seeing.

You shouldn't notice any of this except that things load faster.

💬 What we're hearing

A few patterns from support this month:

  • Team jumping with individual starts: still our most-asked question, but now most users have moved on to applying the new flow to existing shows rather than asking how to set it up from scratch.
  • Peppol activation in Belgium: ongoing questions about how to get set up. We're refining the activation flow and the help article based on what we're seeing.
  • Vaccination lists: recurring questions about creating, importing from TDB, and publishing them. A help article on the full flow is on our list.
  • Working Equitation: several questions about removing the dressage section in WE classes that don't include it, and about adding judges. We're improving the docs.
  • Withdrawals with refund: a few requests for a "withdrawal with refund" option for vet certificates and similar. Noted.

We read every question and report. Keep them coming.

March 2026 Update: Documents, Simpler Team Setup & Entry Controls

March was a big month. We shipped a documents page so riders can see their invoices and paperless results in the app, simplified team jumping setup (by far our most asked support question), and gave organizers new tools to control entries and payments.

🏆 New Features

Documents page (Online / Mobile App)

Riders with connected profiles can now view PDF documents directly in the app. Invoices and paperless results appear under Me > Documents as soon as the organizer sends them. You get a push notification when a new document arrives, and you can filter by type.

Documents for Riders

Simplified team jumping with individual starts (App)

Setting up team jumping competitions where riders start individually used to require several manual steps across two competitions. We added a new judgement type that handles the connection automatically. Choose "A:1a med individuella starter för lagklass" on the individual competition, and everything links up.

This was by far the most common support question in March. We published a dedicated guide with the new flow: Enklare hantering av lagtävling i hoppning med individuella starter

Pinned shows (Online)

You can now pin shows you're following for quick access. Pinned shows get their own section at the top of the meetings page. Works in the browser and in the app.

Email change (Online)

Users can now change their email address from the profile page. It uses the same one-time code verification as sign-in. If the new email already belongs to another account, the two accounts are merged automatically.

image.png 72.6 KB

Server-synced clock for judges (App)

Judges running the browser in fullscreen mode had no way to see the time. The secretary navbar now shows a clock that syncs with the server, so all stations show the same time regardless of local clock drift. In the last minute before the next scheduled start, it switches to a seconds countdown.

Default invoice email message (App)

Organizers can now set a default message that pre-fills when sending invoices by email. Saves time when you send the same instructions with every invoice.

Required competitions in entry (Entry)

Organizers can now require riders to enter and pay for specific competitions before they can enter anything else. Useful for things like stabling fees that need to be sorted before other entries open.

Block riders with outstanding invoices (Entry)

Organizers can now prevent riders who have unpaid invoices from entering new shows. The blocklist works across shows under the same organizer.

Invoice PDF in entry system (Entry)

When an invoice has been sent from the app, riders see a direct PDF link in the entry system instead of the old economy summary.

Excel export from entries (Entry)

You can now export entry data and people to CSV with proper Excel formatting. Includes quantity, extras, and other entry details.

Share button (Online)

The schedule and startlist pages now have a Share button that uses the native share dialog on your phone.

✨ Improvements

  • Accent-insensitive search: Searching for names with special characters (ä, ö, ë) now works correctly. We also replaced the old jQuery UI autocomplete with a faster, custom implementation across the entire app.
  • Official search dialog: You can now search for and add officials directly from the competition officials tab and dressage judges tab.
  • Invoice payment link: When online invoice payments are enabled, invoice emails can include a self-service payment link. The link is automatically excluded for zero-balance or credit invoices.
image.png 126 KB
  • Maximum starts column: Available in the competitions field selector.
  • DNC on date change: The "Do not compete" competition is now created when a competition date changes while the show is open for entry.
  • Safety check before deleting shows: The app now checks if the show exists on online.equipe.com or entry.equipe.com before allowing deletion.
  • Connection deletion confirmation: Replaced swipe-to-delete with a confirmation dialog in the mobile app.
  • Competition details in startlist header: Description, arena name, and start time now show on the startlist page, not just the timetable.
  • FDS driver UI: More compact layout with collapsible sections, visual connection feedback, and a collapsible bell sound picker.
  • Bulk publish protection: A warning now appears when bulk publishing would clear existing competition descriptions. You need to opt in to overwrite them.
  • Keyboard shortcuts: A new cheatsheet dialog shows all available keyboard shortcuts.
  • HC toggle in show jumping: Toggle Hors Concours directly from the result editor without opening the start dialog.
  • Estimated start times: Only generated for show jumping now. Other disciplines no longer get misleading times.
  • Logo group dropdown: Sorted alphabetically in show settings.
  • 1Password autofill: Non-login fields no longer trigger 1Password popups.
  • Header image hint: Shows recommended dimensions (1200×350 pixels) when uploading a hero image.
  • Terms of Service and Privacy Policy: Rewritten from scratch to be clear, accurate, and readable.

🐛 Bug Fixes

  • FDS binary timing: Fixed DLE-stuffing in frame detection and channel mapping for manual time.
  • HC eventing rank: Marking a rider as HC now clears the dressage, jumping, and cross-country rank columns.
  • Invoice number race condition: Fixed duplicate invoice numbers under heavy load using advisory locks.
  • Marking sheet crashes: Fixed several crashes when marking sheet data was missing or incomplete.
  • Battery popover: The secretary status battery popover no longer clips at the screen edge.
  • FEI horse app maintenance: The app now handles FEI maintenance pages gracefully instead of crashing.
  • FEI dressage export: Fixed score calculations and penalty logic in FEI dressage results export.
  • Consecutive breaks: Multiple breaks in a row now show correctly in startlists and result views.
  • Payment rounding: Fixed floating-point rounding errors in the entry system that caused refunds to be off by a cent.
  • FEI arrival time zone: Horse arrival and checkout times now correctly convert from UTC to the show's time zone.
  • Safari iOS 16: Fixed a crash on older Safari caused by unsupported regex syntax.
  • Randomize with merged categories: Start list randomization now includes starts from merged category groups.
  • Bulk publish descriptions: Publishing no longer silently overwrites existing competition descriptions.
  • Show copy timestamp: Copying a show no longer carries over the internet publication timestamp.

💬 What We're Hearing

Some clear patterns from support this month:

  • Team jumping with individual starts: By far the most common question. Setting up team competitions required too many manual steps. We shipped a new judgement type that simplifies it and published an updated guide.
  • Dressage protocols: Questions about sending protocols digitally, correcting judge scores after the fact, and how percentage-based dressage programs work. We are improving the documentation for this.
  • Peppol invoicing: Belgian organizers asking how to set up and send Peppol invoices for the new mandate.
  • Login and accounts: Recurring questions about passwords, adding users to organizer accounts, and admin access.

We read every support question and feature request. If something is unclear or not working the way you expect, let us know.

Enklare hantering av lagtävling i hoppning med individuella starter

Vi har lagt till en ny bedömning som gör det enklare att sätta upp lagtävlingar i hoppning där ryttarna startar individuellt.

Tidigare behövde man konfigurera den individuella klassen och lagklassen separat med flera manuella steg. Nu kan du välja bedömningen A:1a med individuella starter för lagklass direkt i den individuella klassen, så kopplas allt ihop automatiskt.

Det här är en av de vanligaste frågorna vi får i supporten, så vi hoppas att det sparar tid för er som arrangerar den typen av tävlingar.

Guiden är uppdaterad med det nya flödet: Lagtävling i hoppning med individuella starter

February 2026 Update: Custom Fields, Faster Search & Dressage Improvements

February was a productive month. We shipped custom fields for the People and Horses pages, rebuilt search on Equipe Online from scratch, and made dressage scoring more flexible. Here's what changed.

🏆 New Features

Custom fields on People and Horses pages (App)

Your custom fields now show up as columns on the People and Horses pages. You can sort by them, edit them inline, and include them in printed reports and payment reports. Text and number fields use inline editing, boolean fields get a toggle.

This was one of the most requested features from organizers running FEI shows, where custom field data is important for managing entries.

Update person details from FEI (App)

You can now pull updated person details from FEI, the same way you could already do for horses. Useful when a rider's name, nationality, or other details have changed in the FEI database.

Markdown descriptions on Equipe Online (Online)

Meeting class descriptions now support basic formatting: bold, italic, and underline. There's a preview toggle so you can see how it looks before saving. Legacy HTML descriptions from featured meetings are converted automatically.

✨ Improvements

Multi-line dressage remarks (App)

Judge remarks on the dressage score sheet now support multiple lines. The old single-line field wasn't enough for detailed feedback. The new editor includes autocomplete that preserves your typed casing and handles arrow key navigation in wrapped text. Whitespace is automatically trimmed when you leave the field.

Extra fee VAT (Entry)

You can now set an included VAT percentage on extra fees. The receipt shows the fee split into net amount and VAT. Required in some countries for tax compliance.

Smarter people labels (App)

People labels now let you filter which horses appear based on role: rider only, payer only, or both. This fixes cases where a horse showed up on multiple labels when the rider and payer were different people.

Box signs improvements (App)

Box signs now print the right number of copies based on the quantity field and show "1 of 3" on each copy. If the rider's mobile number isn't available, it falls back to the payer's number. Unknown pedigree is skipped instead of showing blank fields.

Todo toggle in People table (App)

The People table now has the same todo toggle in the chat bubble that you know from the starts view. Mark people as needing follow-up directly from the table.

Federation judgements copy button (App)

You can now copy federation judgements with a button click. The system also validates that foreign IDs are unique to prevent duplicates.

Round in team columns (App)

The field selector and start list now show "round included in team" columns for rounds 1 through 6. Useful for seeing and controlling which rounds count toward team results.

Sign in to Equipe Online from the navbar (App)

A new link in the navbar takes you straight to Equipe Online. Small thing, but saves time when you want to check how your show looks to riders.

Entry system improvements (Entry)

  • Horses already entered for the show now appear at the top of the horse selector.
  • The competition selector now works the same way as in the main app.
  • The "arena full" label shows when reserves are present.
  • The entries-per-competition view has been cleaned up.
  • Saving a change no longer closes the edit form.

Publish dialog (App)

The online description field is now a multi-line text area instead of a single-line input. Easier to write longer descriptions. Duplicate autocomplete suggestions are gone.

FEI shows view (App)

Added the arena field and fixed the prize money "beyond" label.

🐛 Bug Fixes

  • Category filter: Categories with names starting with digits (like "1.00m Open") now display correctly in results. The filter was splitting them wrong.
  • Endurance midnight crossing: Speed calculations no longer go negative when a ride starts before midnight and finishes after.
  • Startlist times: Fixed times showing the wrong hour in UTC+0 timezones on Equipe Online.
  • Working equitation marking sheets: Fixed duplicate content printing and a crash when the marking sheet scale was undefined.
  • Peppol VAT matching: Country code comparison is now case-insensitive, so "be" matches "BE".
  • FEI person refresh: Last names are no longer stored in uppercase during FEI data sync.
  • Score summary: Fixed double separator in category display and made name comparison case-insensitive.
  • Press results link: Fixed "invalid content type" error when clicking press results in Equipe Online.
  • People table sorting: Fixed crashes when sorting by custom fields or horse number.
  • Handover marking sheets: Fixed error for competitions without assigned judges.
  • Signature pad: Now shows the meeting name instead of the competition name.
  • Official title translations: Added missing translations for federation representative and supervisor.

🔧 Under the Hood

Search on Equipe Online got a complete rebuild. We replaced the old materialized view with a regular table and incremental sync. Search queries that took over 16 seconds on rare terms now finish in about 1 millisecond. We also added request cancellation for type-ahead search (so abandoned keystrokes don't keep loading the server), horse identifier normalization for more consistent matching, and a 3-character minimum to prevent overly broad queries.

We switched Equipe Online's email delivery from SMTP to HTTP API, which eliminates timeout issues and gives us better error handling. We also added email domain validation at sign-in to catch common typos like "gamil.com" with a helpful "Did you mean gmail.com?" message.

💬 What We're Hearing

A few recurring themes from support this month:

  • Vaccination checklists: A recurring topic from Nordic countries. How to import vaccination lists from TDB and where to find the checked/unchecked status in Equipe.
  • Custom fields: A user reported that horse custom fields weren't visible on the People and Horses pages. We shipped that as a full feature this month.
  • Getting started with Equipe: New organizers asking for help with first-time setup, especially importing shows from other systems.

We read every support question and feature request. These updates come directly from what you tell us.

January 2026 Update: Smarter Entry Limits & Stronger Infrastructure

January was about giving organizers more control and shoring up the technical side of things. Here's what changed.

🏆 New Features

Arena entry limits (Entry)

You can now cap entries per arena per day, separate from per-competition limits. Useful if your venue can handle, say, 80 starts in an arena regardless of how they're split across competitions. Riders who would exceed the limit go on the waiting list automatically. The competition overview shows your current count against the limit.

Peppol delivery tracking (App)

After launching Peppol e-invoicing in December, you can now see when an invoice was actually delivered. The sent invoices list shows a "Delivered" badge when the transport acknowledgement comes back. You can also download the ACK file if you need proof of delivery.

Team time calculation for Australian jumping rules (App)

We added a new team time calculation for an Australian jumping rule. Normally, tied teams are ranked by the sum of their riders' times. The new "Time of last started counting rider" option uses only the time of the highest-numbered counting rider. Find it under Competition → Judgement → Advanced → Team settings.

✨ Improvements

Entry system keyboard shortcuts (App)

Import and Export in the Entry System now have keyboard shortcuts. Saves clicks if you're importing entries throughout the day.

Chip number on rider accreditation (App)

The rider accreditation PDF now shows the horse's chip number. Organizers asked for this because veterinary authorities need it for health certificates.

Peppol refinements (App)

A few Peppol fixes: Belgium's requirement now only kicks in from its actual mandate date; invoice line rounding handles stricter validation rules; and Peppol companies are created even when VAT validation temporarily fails, so you can still send invoices.

Schedule improvements (App)

The schedule view has a new rotate function in the "Check start times" menu and shows participant counts when filtering by judge. Hors concours starts now appear correctly in the previous/speaker section after their round.

Judgement mapping stays on same tab (App)

Editing a judgement mapping while viewing a specific discipline now returns you to that discipline tab instead of jumping to the first one.

Locked IBAN for verified organizers (App)

If an organizer's identity has been verified and locked, the IBAN field is now locked too.

Missing mapping alerts during federation imports (App)

If a required judgement mapping is missing during a federation import, you now get a warning instead of silent failure. (No warnings for disciplines that don't use mappings.)

Competition number links in Entry (Entry)

Competition numbers in Entry are now clickable links, like in the main app.

Protected divider and pinned settings (Online)

When a competition, list, or score summary comes from Equipe App, the divider and pinned settings are locked in Online so accidental changes don't get overwritten on sync.

🐛 Bug Fixes

  • Rider declaration DNC status: "Do Not Compete" competitions from rider declarations now use the correct status based on other competitions that day, not always International
  • Hebrew text in PDFs: Fixed right-to-left text printing in reversed order on marking sheets and reports
  • Score summary in rider lists: Fixed a regression where score summaries couldn't be selected in the "Riders must be in this list" setting
  • Peppol invoice PDF label: Fixed invoices incorrectly showing "Pro-forma" instead of the actual label
  • Prize money "beyond" calculation: Fixed FEI prize distribution where the "beyond" amount wasn't included when placed riders exceeded standard tiers. Now uses actual placed percentage instead of a rough estimate
  • Week navigation at year boundary: Fixed the schedule jumping incorrectly when going from December to January
  • VAT country code extraction: Fixed parsing for lowercase VAT numbers
  • Pro forma invoice emails: Fixed an error sending to certain email addresses
  • Economy account routes: Fixed routing for accounts with forward slashes or special characters
  • Password required for iPad logins: Users with invalid email formats (common for paperless iPad logins) now require a password so the account stays accessible

🔧 Under the Hood

Equipe Online got several infrastructure upgrades this month:

  • Turbo migration: Moved from Turbolinks to Turbo for page navigation
  • Job processing: Replaced the background job system with something simpler
  • Caching: Switched caching, fewer external dependencies
  • New email provider: Better rate limiting and automatic retries
  • Real-time broadcasting: Persistent HTTP connections for faster live updates

Equipe App also got an upgrade with performance improvements.

💬 What We're Hearing

A few recurring topics from support this month:

Dressage marking sheets — Questions about printing protocols, sending them to riders, and paperless scoring setup.

Team competitions — Still getting questions about team competitions with individual starts, especially scoring and results. We published a guide in October (Team competitions with individual starts) that covers this.

Prize money distribution — Questions about FEI's "beyond" amount for larger classes. We fixed a calculation bug this month that affected certain class sizes.


We read every support ticket and feature request. These updates come directly from what you tell us.