This guide explains how to translate a challenge brief (as received from content contributors) into a challenge page file that renders correctly on the site.
Challenge pages live in content/challenges/ and are rendered by _includes/challenge.html + _includes/partials/challenge-section-body.html.
Use the format <shortname>-<year>.md, e.g. vasdl-2026.md, safe-2025.md.
Every challenge file is pure YAML front matter — there is no body content below the closing ---.
---
layout: challenge.html
title: "Full Challenge Title Here"
permalink: /challenges/<shortname>-<year>/
badges:
- text: Video Challenge
icon: youtube_video.svg
- text: Audio Challenge
icon: ear_sound.svg
color: "bg-ul-orange-red" # optional — overrides the default alternating colors
tags:
- challenges
intro_text: |
<b>Hosted by:</b> UL Research Institutes — Digital Safety Research Institute (DSRI)<br>
Co-located with the <em>Workshop Name</em> at CONFERENCE YEAR
description: >-
One or two sentence plain-text description of the challenge (shown below the title).
challenge_url: "https://app.dyff.io/challenges/<id>" # omit if not yet available
tabs:
anchor: challenge-details
sections:
- title: Section Title
description: |
Markdown content for this section.
steps:
- title: Step Title
description: Step content (supports markdown).
disclaimer: Optional italic footnote text shown at the bottom of the section.
---
The default alternating colors are bg-ul-sky-blue (odd) and bg-success (even). Override with the color key on any badge. Other available classes: bg-ul-orange-red, bg-ul-dark-blue.
Icons are resolved from https://cdn.dsri.org/icons/<filename> unless the value already contains / or ://. Common icons: youtube_video.svg, ear_sound.svg, mail.svg, code_blocks.svg, chat_bubble.svg, description.svg.
The tabs block drives the scrollable pill-nav on the page. Each entry under sections becomes one tab.
tabs:
anchor: challenge-details # keep this value; it is the page anchor
sections:
- title: Overview
description: |
Full markdown block for this tab.
steps renders a visual list with a circle/icon on the left and content on the right.
- title: Rules
description: Introductory paragraph shown above the steps.
steps:
- title: Leaderboards
numbered_item: true # renders a numbered circle (1, 2, 3 …)
description: Rule text here.
- title: Contact The Organizers
icon: mail.svg # renders an icon in the circle instead of a number
description: "[[email protected]](mailto:[email protected])"
Step circle options (mutually exclusive, pick one):
| Key | Effect |
|---|---|
numbered_item: true |
Numbered circle auto-incremented within the section |
icon: <filename.svg> |
Icon from cdn.dsri.org/icons |
circle_content: "X" |
Arbitrary text or HTML in the circle |
| (none) | No circle rendered |
disclaimer: By registering you agree to the rules above.
Shown as small italic text at the bottom of the section.
Use this HTML snippet inside a description field to render the highlighted metrics box:
description: |
<div class="content-card">
<div class="content-card-label">Primary Metrics</div>
Balanced Accuracy and ROC AUC for detection; IoU for localization.
</div>
Additional paragraph text below the card.
Inside a description field, insert a visual divider with:
<hr class="section-pills-separator my-4">
<a href="https://forms.gle/..." class="btn btn-primary mt-2">Register</a>
Standard GFM tables work inside description blocks:
| Event | Date | Status |
| :--- | :--- | :--- |
| Pilot Task Opens | November 24, 2025 | ✅ Open |
| Main Task 1 Opens | December 8, 2025 | ✅ Open |
Most challenges follow this tab order. Omit or reorder sections as needed — unused sections can be left as stubs (description: No updates yet.) rather than deleted, to make future updates easier.
| Tab | Notes |
|---|---|
| Overview | Challenge summary, objective, recognition, registration CTA |
| Updates | Reverse-chronological updates using dated steps; stub until launch |
| Participation | Steps for registering, implementing, and submitting |
| Challenge Timeline | Prose or table of key dates |
| Datasets | Dataset description; emphasize blind evaluation |
| Evaluation | Primary metrics card + leaderboard structure |
| Rules | Numbered steps, one per rule; add a disclaimer |
| Helpful Resources | Steps with icons for links (code, email, Discord, docs) |
| Research Grant Winners | Stub until announced |
| Results Publications | Stub until published |
Contributor briefs arrive as plain markdown. Here is how each section maps:
| Brief section | Front matter field or tab |
|---|---|
| Title (H1) | title: |
| Hosted by / Co-located with | intro_text: (use <b> / <em> HTML) |
| View Challenge Results link | challenge_url: |
| About The Challenge / opening paragraph | description: (plain text) and Overview tab description: |
| Objective | Bold line inside Overview description: |
| Recognition | Bold line inside Overview description: |
| Ready to Participate? / Register link | Bottom of Overview description: using HR + CTA button |
| Participant Instructions | Participation tab steps |
| Challenge Tasks / Datasets | Datasets tab and/or Challenge Tasks tab |
| Evaluation / Primary Metrics | Evaluation tab; wrap metric text in the content-card block |
| Rules (numbered list) | Rules tab with numbered_item: true steps |
| Helpful Resources links | Helpful Resources tab steps with icon: keys |
HTML comments <!-- Hide X --> |
Leave that tab as a stub (empty or description: To Be Announced) |
Copy an existing file as a starting point:
cp content/challenges/vasdl-2026.md content/challenges/newchallenge-2026.md
Update title, permalink, badges, intro_text, description, and challenge_url.
Work through each tab and paste in content from the brief, converting prose to the YAML structure described above.
For sections not yet ready (Updates, Schedule, Results), leave a stub:
- title: Updates
description: No updates yet.
Build the site locally and verify the page renders correctly before opening a PR.
---
layout: challenge.html
title: "Example Challenge 2026"
permalink: /challenges/example-2026/
badges:
- text: Image Challenge
icon: description.svg
tags:
- challenges
intro_text: |
<b>Hosted by:</b> UL Research Institutes — Digital Safety Research Institute (DSRI)<br>
Co-located with the <em>Example Workshop</em> at EXAMPLE CONF 2026
description: >-
One sentence describing what participants will do.
challenge_url: "https://app.dyff.io/challenges/<id>"
tabs:
anchor: challenge-details
sections:
- title: Overview
description: |
Extended description of the challenge.
**Objective:** What participants must accomplish.
**Recognition:** What top performers receive.
<hr class="section-pills-separator my-4">
<div>
<span class="fw-bold text-uppercase mb-1 text-ul-dark-blue fs-6">Ready to participate?</span>
<p>Register your team to get started.</p>
<a href="https://forms.gle/..." class="btn btn-primary mt-2">Register</a>
</div>
- title: Updates
description: No updates yet.
- title: Participation
steps:
- title: Register
description: Fill out the registration form.
- title: Implement your model
description: Build a Docker image serving the inference API.
- title: Submit
description: Upload your image to the Dyff platform.
- title: Datasets
description: |
Novel, private datasets created for this challenge. No training data provided.
- title: Evaluation
steps:
- title:
description: |
<div class="content-card">
<div class="content-card-label">Primary Metrics</div>
Balanced Accuracy and ROC AUC for detection; IoU for localization.
</div>
Public and private leaderboards will both be maintained.
- title: Rules
description: Participants agree to the following rules.
steps:
- title: Leaderboards
numbered_item: true
description: The private leaderboard determines final rankings.
- title: Submission Limits
numbered_item: true
description: Participants are limited in daily submissions.
- title: Compliance
numbered_item: true
description: Failure to comply may result in disqualification.
disclaimer: By registering, participants agree to these rules.
- title: Helpful Resources
steps:
- title: Contact The Organizers
description: "[[email protected]](mailto:[email protected])"
icon: mail.svg
- title: Example Submission
description: "[gitlab.com/dsri-org/challenges/example-2026](https://gitlab.com/dsri-org/challenges/example-2026)"
icon: code_blocks.svg
---