Challenge Configuration Examples

This guide provides a set of fully functional examples of challenge_config.yaml file for common challenge setups on EvalAI. Each example illustrates a different real-world use case—ranging from single-phase challenges to multi-phase, multi-leaderboard competitions. These templates are designed to help organizers get started quickly, and understand how various components of the configuration work together.

Before using any of the following templates as your challenge configuration, make sure all the mentioned files exist in the respective paths as mentioned in different fields of the configuration. (e.g., test_annotation_file, description, etc.)

Example 1: One Challenge, One Phase, One Leaderboard, One Phase Split

example_1_config.yaml:

title: "Image Classification Challenge"
short_description: "Classify images into categories."
description: "templates/description.html"
evaluation_details: "templates/evaluation_details.html"
terms_and_conditions: "templates/terms_and_conditions.html"
image: "logo.jpg"
submission_guidelines: "templates/submission_guidelines.html"
leaderboard_description: "The leaderboard shows the evaluation results of your submissions based on accuracy. Higher is better."
evaluation_script: "evaluation_script.zip"
remote_evaluation: false
start_date: "2025-07-01 00:00:00"
end_date: "2025-12-01 23:59:59"
published: false
tags: 
  - image-classification
  - supervised-learning
  - computer-vision

leaderboard:
  - id: 1
    schema: {
      "labels": ["Accuracy"],
      "default_order_by": "Accuracy",
      "metadata": {
        "Accuracy": {
          "sort_ascending": false,
          "description": "Classification accuracy on the test set"
        }
      }
    }

challenge_phases:
  - id: 1
    name: Dev Phase
    description: templates/challenge_phase_1_description.html
    leaderboard_public: True
    is_public: True
    challenge: 1
    is_active: True
    max_concurrent_submissions_allowed: 3
    allowed_email_ids: []
    disable_logs: False
    is_submission_public: True
    start_date: 2025-07-01 00:00:00
    end_date: 2025-10-01 23:59:59
    test_annotation_file: annotations/test_annotations_devsplit.json
    codename: dev
    max_submissions_per_day: 5
    max_submissions_per_month: 50
    max_submissions: 100
    default_submission_meta_attributes:
      - name: method_name
        is_visible: True
      - name: method_description
        is_visible: True
    submission_meta_attributes:
      - name: description
        description: Describe your classification method
        type: text
        required: True
      - name: model_type
        description: Select model type
        type: radio
        options: ["CNN", "Transformer", "Other"]
      - name: pre_trained
        description: Is the model pre-trained?
        type: boolean
    is_restricted_to_select_one_submission: False
    is_partial_submission_evaluation_enabled: False
    allowed_submission_file_types: ".json, .zip"

dataset_splits:
  - id: 1
    name: Test Split
    codename: test_split

challenge_phase_splits:
  - challenge_phase_id: 1
    leaderboard_id: 1
    dataset_split_id: 1
    visibility: 1
    leaderboard_decimal_precision: 2
    is_leaderboard_order_descending: True
    show_execution_time: True
    show_leaderboard_by_latest_submission: True

Example 2: One Challenge, One Phase, Two Leaderboards, Two Phase Splits

example_2_config.yaml:

title: "Simple QA Challenge"
short_description: "Answer simple factual questions."
description: "templates/description.html"
evaluation_details: "templates/evaluation_details.html"
terms_and_conditions: "templates/terms_and_conditions.html"
image: "logo.jpg"
submission_guidelines: "templates/submission_guidelines.html"
leaderboard_description: "The leaderboard tracks performance based on accuracy and speed."
evaluation_script: "evaluation_script.zip"
remote_evaluation: false
start_date: "2025-10-01 00:00:00"
end_date: "2026-01-31 23:59:59"
published: false
tags: 
  - question-answering
  - qa
  - text

leaderboard:
  - id: 1
    schema: {
      "labels": ["Correct Answers"],
      "default_order_by": "Correct Answers",
      "metadata": {
        "Correct Answers": {
          "sort_ascending": false,
          "description": "Total number of correct answers"
        }
      }
    }

  - id: 2
    schema: {
      "labels": ["Average Response Time"],
      "default_order_by": "Average Response Time",
      "metadata": {
        "Average Response Time": {
          "sort_ascending": true,
          "description": "Average time taken to answer a question"
        }
      }
    }

challenge_phases:
  - id: 1
    name: QA Phase
    description: templates/challenge_phase_1_description.html
    leaderboard_public: true
    is_public: true
    challenge: 1
    is_active: true
    max_concurrent_submissions_allowed: 3
    allowed_email_ids: []
    disable_logs: false
    is_submission_public: true
    start_date: 2025-10-01 00:00:00
    end_date: 2026-01-31 23:59:59
    test_annotation_file: annotations/test_annotations_devsplit.json
    codename: qa
    max_submissions_per_day: 5
    max_submissions_per_month: 50
    max_submissions: 100
    default_submission_meta_attributes:
      - name: method_name
        is_visible: true
      - name: method_description
        is_visible: true
    submission_meta_attributes:
      - name: System Type
        description: Choose system type
        type: radio
        options: ["Rule-Based", "ML-Based"]
      - name: Open Source
        description: Is it open source?
        type: boolean
        required: false
    is_restricted_to_select_one_submission: false
    is_partial_submission_evaluation_enabled: false
    allowed_submission_file_types: ".json, .zip"

dataset_splits:
  - id: 1
    name: Accuracy Split
    codename: accuracy_split
  - id: 2
    name: Speed Split
    codename: speed_split

challenge_phase_splits:
  - challenge_phase_id: 1
    leaderboard_id: 1
    dataset_split_id: 1
    visibility: 1
    leaderboard_decimal_precision: 0
    is_leaderboard_order_descending: true
    show_execution_time: true
    show_leaderboard_by_latest_submission: false

  - challenge_phase_id: 1
    leaderboard_id: 2
    dataset_split_id: 2
    visibility: 1
    leaderboard_decimal_precision: 2
    is_leaderboard_order_descending: true
    show_execution_time: true
    show_leaderboard_by_latest_submission: false

Example 3: One Challenge, Two Phases, One Leaderboard, Two Phase Splits

example_3_config.yaml:

title: "Object Detection Challenge"
short_description: "Detect objects in images."
description: "templates/description.html"
evaluation_details: "templates/evaluation_details.html"
terms_and_conditions: "templates/terms_and_conditions.html"
image: "logo.jpg"
submission_guidelines: "templates/submission_guidelines.html"
leaderboard_description: "Leaderboard evaluates detection performance using correct, missed, and combined scores."
evaluation_script: "evaluation_script.zip"
remote_evaluation: false
start_date: "2025-08-01 00:00:00"
end_date: "2026-01-01 23:59:59"
published: false
tags:
  - object-detection
  - computer-vision

leaderboard:
  - id: 1
    schema: {
      "labels": ["Correct Detections", "Missed Detections", "Overall Score"],
      "default_order_by": "Overall Score",
      "metadata": {
        "Correct Detections": {
          "sort_ascending": false,
          "description": "Number of correct object predictions"
        },
        "Missed Detections": {
          "sort_ascending": true,
          "description": "Number of objects the model failed to detect"
        },
        "Overall Score": {
          "sort_ascending": false,
          "description": "Combined score of accuracy and completeness"
        }
      }
    }

challenge_phases:
  - id: 1
    name: Dev Phase
    description: templates/challenge_phase_1_description.html
    leaderboard_public: true
    is_public: true
    challenge: 1
    is_active: true
    max_concurrent_submissions_allowed: 3
    allowed_email_ids: []
    disable_logs: false
    is_submission_public: true
    start_date: 2025-08-01 00:00:00
    end_date: 2025-10-15 23:59:59
    test_annotation_file: annotations/test_annotations_devsplit.json
    codename: dev
    max_submissions_per_day: 5
    max_submissions_per_month: 50
    max_submissions: 100
    default_submission_meta_attributes:
      - name: method_name
        is_visible: true
      - name: method_description
        is_visible: true
    submission_meta_attributes:
      - name: framework
        description: Framework used
        type: radio
        options: ["PyTorch", "TensorFlow", "Other"]
        required: false
      - name: open_source
        description: Is your code open source?
        type: boolean
        required: false
    is_restricted_to_select_one_submission: false
    is_partial_submission_evaluation_enabled: false
    allowed_submission_file_types: ".json, .zip"

  - id: 2
    name: Test Phase
    description: templates/challenge_phase_2_description.html
    leaderboard_public: true
    is_public: true
    challenge: 1
    is_active: false
    max_concurrent_submissions_allowed: 3
    allowed_email_ids: []
    disable_logs: false
    is_submission_public: true
    start_date: 2025-10-16 00:00:00
    end_date: 2026-01-01 23:59:59
    test_annotation_file: annotations/test_annotations_testsplit.json
    codename: test
    max_submissions_per_day: 5
    max_submissions_per_month: 50
    max_submissions: 100
    default_submission_meta_attributes:
      - name: method_name
        is_visible: true
      - name: method_description
        is_visible: true
    submission_meta_attributes:
      - name: framework
        description: Framework used
        type: radio
        options: ["PyTorch", "TensorFlow", "Other"]
        required: false
      - name: open_source
        description: Is your code open source?
        type: boolean
        required: false
    is_restricted_to_select_one_submission: false
    is_partial_submission_evaluation_enabled: false
    allowed_submission_file_types: ".json, .zip"

dataset_splits:
  - id: 1
    name: Dev Split
    codename: dev_split
  - id: 2
    name: Test Split
    codename: test_split

challenge_phase_splits:
  - challenge_phase_id: 1
    leaderboard_id: 1
    dataset_split_id: 1
    visibility: 1
    leaderboard_decimal_precision: 2
    is_leaderboard_order_descending: true
    show_execution_time: true
    show_leaderboard_by_latest_submission: true

  - challenge_phase_id: 2
    leaderboard_id: 1
    dataset_split_id: 2
    visibility: 1
    leaderboard_decimal_precision: 2
    is_leaderboard_order_descending: true
    show_execution_time: true
    show_leaderboard_by_latest_submission: true

Example 4: One Challenge, Three Phases, Two Leaderboards, Four Phase Splits

example_4_config.yaml:

title: "Multi-Stage NLP Challenge"
short_description: "NLP challenge with public/private testing."
description: "templates/description.html"
evaluation_details: "templates/evaluation_details.html"
terms_and_conditions: "templates/terms_and_conditions.html"
image: "logo.jpg"
submission_guidelines: "templates/submission_guidelines.html"
leaderboard_description: "Leaderboard evaluates both match accuracy and mismatch rate across multiple stages."
evaluation_script: "evaluation_script.zip"
remote_evaluation: false
start_date: "2025-09-01 00:00:00"
end_date: "2026-03-01 23:59:59"
published: false
tags: 
  - nlp
  - machine-learning

leaderboard:
  - id: 1
    schema: {
      "labels": ["Match Accuracy"],
      "default_order_by": "Match Accuracy",
      "metadata": {
        "Match Accuracy": {
          "sort_ascending": false,
          "description": "How accurately the model predicts matched pairs"
        }
      }
    }

  - id: 2
    schema: {
      "labels": ["Mismatch Rate"],
      "default_order_by": "Mismatch Rate",
      "metadata": {
        "Mismatch Rate": {
          "sort_ascending": true,
          "description": "How often the model incorrectly identifies non-matches"
        }
      }
    }

challenge_phases:
  - id: 1
    name: Dev Phase
    description: templates/challenge_phase_1_description.html
    leaderboard_public: true
    is_public: true
    challenge: 1
    is_active: true
    max_concurrent_submissions_allowed: 3
    allowed_email_ids: []
    disable_logs: false
    is_submission_public: true
    start_date: 2025-09-01 00:00:00
    end_date: 2025-10-15 23:59:59
    test_annotation_file: annotations/test_annotations_devsplit.json
    codename: dev
    max_submissions_per_day: 5
    max_submissions_per_month: 50
    max_submissions: 100
    default_submission_meta_attributes:
      - name: method_name
        is_visible: true
      - name: method_description
        is_visible: true
    submission_meta_attributes:
      - name: pretraining
        description: Was the model pretrained?
        type: radio
        options: ["Yes", "No"]
        required: false
      - name: public_code
        description: Is your code publicly available?
        type: boolean
        required: false
    is_restricted_to_select_one_submission: false
    is_partial_submission_evaluation_enabled: false
    allowed_submission_file_types: ".json, .zip"

  - id: 2
    name: Public Test
    description: templates/challenge_phase_2_description.html
    leaderboard_public: true
    is_public: true
    challenge: 1
    is_active: false
    max_concurrent_submissions_allowed: 3
    allowed_email_ids: []
    disable_logs: false
    is_submission_public: true
    start_date: 2025-10-16 00:00:00
    end_date: 2025-12-01 23:59:59
    test_annotation_file: annotations/test_annotations_public_split.json
    codename: test-public
    max_submissions_per_day: 5
    max_submissions_per_month: 50
    max_submissions: 100
    default_submission_meta_attributes:
      - name: method_name
        is_visible: true
      - name: method_description
        is_visible: true
    submission_meta_attributes:
      - name: pretraining
        description: Was the model pretrained?
        type: radio
        options: ["Yes", "No"]
        required: false
      - name: public_code
        description: Is your code publicly available?
        type: boolean
        required: false
    is_restricted_to_select_one_submission: false
    is_partial_submission_evaluation_enabled: false
    allowed_submission_file_types: ".json, .zip"

  - id: 3
    name: Private Test
    description: templates/challenge_phase_3_description.html
    leaderboard_public: true
    is_public: false
    challenge: 1
    is_active: false
    max_concurrent_submissions_allowed: 3
    allowed_email_ids: []
    disable_logs: false
    is_submission_public: true
    start_date: 2025-12-02 00:00:00
    end_date: 2026-03-01 23:59:59
    test_annotation_file: annotations/test_annotations_private_split.json
    codename: test-private
    max_submissions_per_day: 5
    max_submissions_per_month: 50
    max_submissions: 100
    default_submission_meta_attributes:
      - name: method_name
        is_visible: true
      - name: method_description
        is_visible: true
    submission_meta_attributes:
      - name: pretraining
        description: Was the model pretrained?
        type: radio
        options: ["Yes", "No"]
        required: false
      - name: public_code
        description: Is your code publicly available?
        type: boolean
        required: false
    is_restricted_to_select_one_submission: false
    is_partial_submission_evaluation_enabled: false
    allowed_submission_file_types: ".json, .zip"

dataset_splits:
  - id: 1
    name: Dev Split-1
    codename: dev_split
  - id: 2
    name: Public Test
    codename: test_pub_split
  - id: 3
    name: Private Test
    codename: test_priv_split

challenge_phase_splits:
  - challenge_phase_id: 1
    leaderboard_id: 1
    dataset_split_id: 1
    visibility: 1
    leaderboard_decimal_precision: 2
    is_leaderboard_order_descending: true
    show_execution_time: true
    show_leaderboard_by_latest_submission: true

  - challenge_phase_id: 1
    leaderboard_id: 2
    dataset_split_id: 1
    visibility: 1
    leaderboard_decimal_precision: 2
    is_leaderboard_order_descending: true
    show_execution_time: true
    show_leaderboard_by_latest_submission: true

  - challenge_phase_id: 2
    leaderboard_id: 2
    dataset_split_id: 2
    visibility: 1
    leaderboard_decimal_precision: 2
    is_leaderboard_order_descending: true
    show_execution_time: true
    show_leaderboard_by_latest_submission: true

  - challenge_phase_id: 3
    leaderboard_id: 2
    dataset_split_id: 3
    visibility: 1
    leaderboard_decimal_precision: 2
    is_leaderboard_order_descending: true
    show_execution_time: true
    show_leaderboard_by_latest_submission: true